如何在dropdownlist(使用AJAX)中输入python在selenium中不可见的值

如何在dropdownlist(使用AJAX)中输入python在selenium中不可见的值,ajax,python-2.7,selenium,selenium-webdriver,Ajax,Python 2.7,Selenium,Selenium Webdriver,我是selenium的新手,我想在下拉列表中输入值,并尝试了各种方法,在web上搜索,我已经看到了 STACKOVER flow中的许多帖子对我来说都不管用 这是HTML代码 我试过了 1) x=Select(driver.find_element_by_id("expiry-date-month")) x.select_by_value("4") 2) element = driver.find_element_by_id('expiry-date-month')

我是selenium的新手,我想在下拉列表中输入值,并尝试了各种方法,在web上搜索,我已经看到了 STACKOVER flow中的许多帖子对我来说都不管用

这是HTML代码

我试过了

1)    x=Select(driver.find_element_by_id("expiry-date-month"))

       x.select_by_value("4")


2) element = driver.find_element_by_id('expiry-date-month')
    for option in element.find_elements_by_tag_name('option'):
          if option.text=='4':
             option.click() 

当iam试图获取错误消息时,我想选择月份复选框值,因为“元素当前不可见,因此可能无法与之交互”,请向我展示此问题的解决方案

HTML代码

到期日期
月
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
月
/

作为一种解决方法,您需要使用JavaScript为下拉列表启用显示,因为显示设置为“无”

以下代码适用于您:

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('expiry-date-month').style.display='block';");

//Then Select required value
x=Select(driver.find_element_by_id("expiry-date-month"))

x.select_by_value("4")

你的第一次尝试,1,将是正常的方式做这件事。当您尝试该操作时,会出现哪些错误或异常?“元素当前不可见,因此可能无法与之交互”这是我使用selenium 2.37.2和Firefox版本20使用iam的任何方法得到的错误消息。您可以使用JavascriptExecutor驱动程序来执行此操作。执行脚本(“document.getElementById('expire-date-month')).style.displa‌​y='block')time.sleep(5)try:x=Select(driver.find_element_by_id(“到期日期月”))x.Select_by_visible_text(“4”)打印“输入的文本”,除了NoSuchElementException:print“Error”,,但是我得到了一个新的下拉列表,并且没有在其中输入任何值。我喜欢你提到的像这个驱动程序一样的书面代码。执行脚本(“document.getElementById('expiration-date-month')。style.display='block')time.sleep(5)try:x=Select(driver.find_element_by_-id('expiration-date-month'))x.选择“按可见”文本(“4”)打印“输入的文本”,除了NoTouchElementException:打印“错误”之外,我还得到了一个新的下拉列表,没有在i中输入任何值。你知道吗
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('expiry-date-month').style.display='block';");

//Then Select required value
x=Select(driver.find_element_by_id("expiry-date-month"))

x.select_by_value("4")