Запуск события обмена для доступа к полю ввода с помощью Selenium & Webdriver - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь добавить дату в поле ввода. Когда я использую webdriver для доступа к полю ввода, используйте этот код:

 driver.find_element_by_class_name('input[class=".textbox-text.validatebox-text.textbox-prompt"]')

Я получаю сообщение об ошибке:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class selector","selector":"input[class=".textbox-text.validatebox-text.textbox-prompt"]"}

Когда я запускаю цикл get_attribute ('class'), я вижу этот класс:

easyui-datebox base datebox-f combo-f textbox-f

но когда я пытаюсь выбрать, используя этот код:

driver.find_element_by_class_name('input[class=".easyui-datebox.base.datebox-f.combo-f.textbox-f"]')

Я получаю эту ошибку:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class name","selector":"input[class=".easyui-datebox.base.datebox-f.combo-f.textbox-f"]"}

это HTML-код:

<td width="114" nowrap="">
    <input type="text" id="FROMDATE" class="easyui-datebox base datebox-f combo-f textbox-f" data-options="keyHandler: {
        up: function(e){},
        down: function(e){},
        left: function(e){},
        right: function(e){},
        enter: function(e){handleReturn(e);},
        query: function(q,e){}
    }, 
        onChange:function(newVal,oldVal){if (ignoreOnChange) return false; resetDateRange_150();}" style="width: 114px; display: none;" textboxname="FROMDATE" comboname="FROMDATE">
        <span class="textbox combo datebox" style="width: 112px; height: 20px;">
        <span class="textbox-addon textbox-addon-right" style="right: 0px;"><a href="javascript:void(0)" class="textbox-icon combo-arrow" icon-index="0" tabindex="-1" style="width: 18px; height: 20px;"></a></span>
        <input type="text" class="textbox-text validatebox-text textbox-prompt" autocomplete="off" placeholder="" style="margin-left: 0px; margin-right: 18px; padding-top: 3px; padding-bottom: 3px; width: 86px;">
        <input type="hidden" class="textbox-value" name="FROMDATE" value="">    


поле ввода, к которому я пытаюсь обратиться:

<input type="text" class="textbox-text validatebox-text textbox-prompt" autocomplete="off" placeholder="" style="margin-left: 0px; margin-right: 18px; padding-top: 3px; padding-bottom: 3px; width: 86px;">

Есть предложения?

1 Ответ

0 голосов
/ 15 мая 2018
 driver.find_element_by_class_name('input[class=".textbox-text.validatebox-text.textbox-prompt"]')

В приведенном выше коде значение, указанное для имени класса, кажется недействительным.

input [class = ". Textbox-text.validatebox-text.textbox-prompt"] представляется синтаксисом css . Однако для этого потребуется одно исправление. Допустимый селектор CSS:

input.textbox-text.validatebox-text.textbox-prompt

или

input [class = 'textbox-text validatebox-text textbox-prompt']

Я бы предложил использовать одно из следующих:

driver.find_element_by_css_selector("input.textbox-text.validatebox-text.textbox-prompt")

driver.find_element_by_css_selector("input[class='textbox-text validatebox-text textbox-prompt']")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...