Как выбрать элемент на веб-сайте javascript / CSS с помощью Excel vba? - PullRequest
0 голосов
/ 10 октября 2019

Недавно я работал над кодом для заполнения веб-страницы, выполненной на JavaScript / CSS, однако, при попытке заполнить любое значение раскрывающегося / всплывающего меню, хотя текст пишется на поле,элемент не выбран, что делает его недействительным.

Я заполняю поля, находя его elementID, а затем отправляю значение в

    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    ie.document.getElementByID(CRMPE(i)).Value = CampoPE(i)
    Dim id As String

    id="_FOpt1:_FOr1:0:_FOSrCRM_CUSTOM_CARD_EMRQUOTE_C:0:_FOTsr1:0:ExtGen_pt11:ExtGen_cr1:0:ExtGen_ptCr11:ExtGen_attr_Tier_c_EMRQuote_c1::pop"   

, где CRMPE содержит идентификаторы полейи CampoPE содержит значения для вставки на веб-странице.

Для выпадающих списков, которые я пробовал:

    ie.document.getElementByID(id).Focus
    ie.document.getElementByID(id).selectedIndex = 1
    ie.document.getElementByID(id).FireEvent
    ie.document.getElementByID(id)(1).Click
    ie.document.getElementByID(id).FireEvent ("onchange")
    ie.document.getElementsByTagName(id).querySelector("Li[_adfiv=3]").Click

Ни один из них не работал.

Я думаю,основная проблема заключается в том, как структурирована страница

Здесь следует код CSS:

<ul class="x1qu" id="_FOpt1:_FOr1:0:_FOSrCRM_CUSTOM_CARD_EMRQUOTE_C:0:_FOTsr1:0:ExtGen_pt11:ExtGen_cr1:0:ExtGen_ptCr11:ExtGen_attr_Tier_c_EMRQuote_c1::pop"><li id="_FOpt1:_FOr1:0:_FOSrCRM_CUSTOM_CARD_EMRQUOTE_C:0:_FOTsr1:0:ExtGen_pt11:ExtGen_cr1:0:ExtGen_ptCr11:ExtGen_attr_Tier_c_EMRQuote_c1::sp" class="x1qz" style="width: 264px;"></li><li class="x1r3" _adfiv=""></li><li class="x1r3" _adfiv="NO_VALUE">No Value</li><li class="x1r3" _adfiv="0">0</li><li class="x1r3 p_AFSelected" _adfiv="1">1</li><li class="x1r3" _adfiv="2">2</li><li class="x1r3" _adfiv="3">3</li><li class="x1r3" _adfiv="4">4</li><li class="x1r3" _adfiv="5">5</li></ul>
<li id="_FOpt1:_FOr1:0:_FOSrCRM_CUSTOM_CARD_EMRQUOTE_C:0:_FOTsr1:0:ExtGen_pt11:ExtGen_cr1:0:ExtGen_ptCr11:ExtGen_attr_Tier_c_EMRQuote_c1::sp" class="x1qz" style="width: 264px;"></li>
<li class="x1r3" _adfiv=""></li>
<li class="x1r3" _adfiv="NO_VALUE">No Value</li>
<li class="x1r3" _adfiv="0">0</li>
<li class="x1r3 p_AFSelected" _adfiv="1">1</li>
<li class="x1r3" _adfiv="2">2</li>
<li class="x1r3" _adfiv="3">3</li>

Как показано, выбранный элемент добавил к своему имени класса p_AFSelected,

Я попробовал все вышеперечисленные коды с .classname = "x1r3 p_AFSelected", но безуспешно

Поэтому главный вопрос, как я могу выбрать одно из этих значений, щелкнув или изменив его classname, чтобы добавитьp_AFSelected?

Приветствуется любое другое работающее решение.

1 Ответ

0 голосов
/ 11 октября 2019

Вы можете попробовать атрибут = значение css-селектор для целевых элементов

ie.document.querySelector("[_adfiv='2']").click

И (не уверен, правильно ли ваш html добавлен к вопросу)

ie.document.querySelectorAll("[_adfiv='2']").item(1).click
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...