Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何单击selenium和python的不可交互下拉列表并选择一个选项?_Javascript_Python_Html_Selenium - Fatal编程技术网

Javascript 如何单击selenium和python的不可交互下拉列表并选择一个选项?

Javascript 如何单击selenium和python的不可交互下拉列表并选择一个选项?,javascript,python,html,selenium,Javascript,Python,Html,Selenium,我有一个id为“drp_autogen0”的下拉列表。我想单击下拉列表,查看下拉选项。当我尝试用Python和Selenium单击它时,会出现以下错误:Selenium.common.exceptions.ElementNotInteractiableException:Message:element不可交互 我已经附上了下拉列表的打印屏幕。我希望能够从列表中选择“上个月”,但我还没有做到这一点,因为下拉列表没有被点击。 下拉式单击的代码如下: html_list = driver.find_

我有一个id为“drp_autogen0”的下拉列表。我想单击下拉列表,查看下拉选项。当我尝试用Python和Selenium单击它时,会出现以下错误:Selenium.common.exceptions.ElementNotInteractiableException:Message:element不可交互 我已经附上了下拉列表的打印屏幕。我希望能够从列表中选择“上个月”,但我还没有做到这一点,因为下拉列表没有被点击。

下拉式单击的代码如下:

html_list = driver.find_element_by_id("drp_autogen0")
html_list.click()
下拉按钮的web代码为:

<button type="button" class="comiseo-daterangepicker-triggerbutton ui-button ui-corner-all ui-widget comiseo-daterangepicker-bottom" id="drp_autogen0">22 Nov 2019<span class="ui-button-icon-space"> </span><span class="ui-button-icon ui-icon ui-icon-triangle-1-s"></span></button>
2019年11月22日
上个月的网络代码为:

<div id="ui-id-5" tabindex="-1" role="menuitem" class="ui-menu-item-wrapper">Last month</div>
上个月

请检查DOM在运行时是否未更改。如果未更改,则有两种方法解决此异常:

1。隐式等待

driver.manage().timeouts().implicitly Wait(10, TimeUnit.SECONDS);
2。WebDriver等待:

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("<Element path>")));
WebDriverWait wait=newwebdriverwait(驱动程序,20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(“”));

如果您收到
elementnotinteractiable
错误消息,您可以尝试使用Javascript解决此问题,单击:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# first, wait for the button to exist
html_list = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "drp_autogen0")))

# now click with Javascript
driver.execute_script("arguments[0].click();", html_list)

# now, click last month -- wait for it to exist first!
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Last month']"))).click()
此代码示例对所需元素调用
WebDriverWait
,以确保它们在单击之前已完全加载到页面上

然后,我们使用Javascript单击第一个
按钮
元素,以解决
elementnotinteractiable
异常。一旦下拉列表展开,我们将等待上个月的
选项存在,然后再尝试单击它

即使页面上立即出现按钮/下拉选项,Selenium/Python也会在DOM中快速移动,因此有可能是
driver
试图单击一些尚不存在的内容。
WebDriverWait
语句只需确保页面上存在该元素,然后再尝试单击