使用Selenium& amp;来触发onchange事件以访问输入字段的webdriver

时间:2018-05-15 15:38:43

标签: python-3.x selenium-webdriver selenium-chromedriver

我试图在输入字段中添加日期。当我使用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 :(得分:0)

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

在上面的代码中,为类名指定的值似乎无效。

输入[class =“。textbox-text.validatebox-text.textbox-prompt”] 似乎是 css选择器语法。但是,这需要一次修正。 有效的css选择器是:

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

输入[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']")