无法通过 XPATH Selenium Python 定位可点击元素

问题描述 投票:0回答:1

我尝试单击下拉菜单,然后单击菜单中的特定值。我正在使用浮动范围菜单: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。

这是 HTML:

我需要单击下拉列表中的“任意”值。

有什么想法吗?

感谢您的帮助

python selenium-webdriver xpath
1个回答
0
投票

我们无法猜测“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()
© www.soinside.com 2019 - 2024. All rights reserved.