Javascript 如何单击selenium和python的不可交互下拉列表并选择一个选项?
我有一个id为“drp_autogen0”的下拉列表。我想单击下拉列表,查看下拉选项。当我尝试用Python和Selenium单击它时,会出现以下错误:Selenium.common.exceptions.ElementNotInteractiableException:Message:element不可交互 我已经附上了下拉列表的打印屏幕。我希望能够从列表中选择“上个月”,但我还没有做到这一点,因为下拉列表没有被点击。 下拉式单击的代码如下: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_
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
语句只需确保页面上存在该元素,然后再尝试单击