只有在Selenium Web驱动程序中单击两次后,才能使用下拉列表

时间:2015-01-07 00:19:29

标签: javascript jquery python selenium

我在Browserstack platform上使用Selenium和Python。

我正在测试select2下拉列表,我总是需要点击两次下拉列表才能使其正常工作:

dropdown_click = driver.find_element_by_css_selector('#s2id_autogen2 a.select2-choice')
actions.click(dropdown_click).perform()
actions.click(dropdown_click).perform()  # another click to open dropdown.
driver.implicitly_wait(2)
make_list = driver.find_element_by_id('select2-drop')
assert make_list.is_displayed()

implicitly_wait,但没有第二个click(),下拉列表仍然不可见,断言失败。

这不是唯一一个在Selenium中以这种方式行为错误的JS下拉列表。

此JavaScript代码在浏览器中正常运行,但在Selenium中,只有在第一次点击时才正确。我第二次打电话给click()两次。

$('span.opener').on('click', function() {
    $(this).next('.dropdown').toggleClass('dropdown-visible');
})

Selenium和这些下拉有什么问题?

编辑:显式等待确实解决了这个问题。

2 个答案:

答案 0 :(得分:1)

您可能希望先悬停到下拉菜单,然后执行点击操作。这在过去有些时候对我很有帮助。

答案 1 :(得分:0)

如果它的行为类似于使用以下语句可以起作用:

new SelectElement(driver.FindElement(By.Id("YourDropdownID"))).SelectByIndex(indexValueYouWantToSelct));

或者你可以这样做

new SelectElement(driver.FindElement(By.Id("YourDropdownID"))).SelectByText("YourDropDownItemText");

或者你也可以试试这个

new SelectElement(driver.FindElement(By.Id("YourDropdownID"))).SelectByValue("YourDoropDownItemValue");