我尝试单击下拉菜单,然后单击菜单中的特定值。我正在使用浮动范围菜单:https://buff.163.com/goods/769563?from=market#tab=buying&page_num=1。我尝试使用 SelectorsHub 中的相对 xpath 和 Paintwear_list id,但我不断收到此错误:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
这是我正在运行的代码:
floatRange = waitForItem(driver, By.XPATH, "(//div[@class='w-Select-Multi w-Select-scroll black float_range'])[2]", timeout=3)
floatRange.click()
allBuyOrders = waitForItem(driver, By.XPATH, "//h6[@value='-1~-1']", timeout=3)
allBuyOrders.click()
我知道问题不是元素尚未加载,因为我通过 waitForItem 调用使用 webdriverwait。
我需要单击下拉列表中的“任意”值。
有什么想法吗?
感谢您的帮助
我们无法猜测“waitForItem”方法/函数的内部内容。
要在提供的网站上选择“任意”选项,您首先需要展开下拉列表,确保其已展开,然后才进行选项选择。
“ElementNotInteractableException”异常意味着该元素存在于 DOM 中,但尚未达到目标元素状态,因此您必须等待一段时间。
以下代码示例对我来说效果很好:
try:
driver.get("https://buff.163.com/goods/769563?from=market#tab=buying&page_num=1")
# open the dropdown
wait.until(EC.element_to_be_clickable(
(By.CSS_SELECTOR, "div#asset_tag-filter-buyOrder div#custom_paintwear_val"))
).click()
wait.until(EC.visibility_of_element_located(
(By.CSS_SELECTOR, "div#asset_tag-filter-buyOrder div#custom_paintwear_val.on"))
)
# select the 'Any' option
wait.until(EC.element_to_be_clickable(
(By.XPATH, "//div[@id='asset_tag-filter-buyOrder']//ul/li/h6[text()='Any']"))
).click()
finally:
driver.quit()