【问题标题】:how to interact with a drop down menu using python and selenium如何使用 python 和 selenium 与下拉菜单交互
【发布时间】:2022-01-20 14:12:56
【问题描述】:

这是我尝试与之交互的网页元素:

<select class="experiment-enable-disable" tabindex="6" jsdisplay="enabled !== undefined" jsvalues=".internal_name:internal_name; aria-labelledby:internal_name + '_name'" jstcache="8" aria-labelledby="enable-experimental-web-platform-features_name">
    <option jsvalues=".selected:!enabled; data-default:!enabled ? 1 : 0" value="disabled" jstcache="15" data-default="1">Disabled</option>
    <option jsvalues=".selected:enabled; data-default: enabled ? 1 : 0" value="enabled" jstcache="16" data-default="0">Enabled</option>
</select>

这是我用来选择它的代码:

select = driver.find_element_by_class_name("experiment-enable-disable")

现在,当我尝试以“点击”或“发送键”等方式与之交互时,它会显示 “元素不可交互”

我如何与这个下拉菜单交互?

【问题讨论】:

    标签: python html css selenium


    【解决方案1】:

    当您尝试与之交互时,下拉菜单可能尚未加载。您始终可以通过执行以下操作来引发等待:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    
    driver = webdriver.Chrome()
    driver.get("insertwebsitehere")
    
    try:
         element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(By.XPATH,'xpath')).click()
         print("it's clickable")
    except:
         pass
    

    编辑:如果可能的话,我会使用 XPATH。 find_element_by_class_name 也已弃用。如果您想使用类名而不是 XPATH,请改用 find_element(By.CLASS_NAME, "insert class name here")

    【讨论】:

    • 不幸的是它已经可以点击了。我找到了使用 send_keys 的解决方法,但它没有正确回答问题。
    • @DavidO'Donovan 你仍然可以使用我的代码来检查它是否可点击;在wait 之后,您可以实现代码以单击所需元素的 XPATH。例如:find_element(By.XPATH, ' ').click()。您还可以实现time.sleep() 以等待下拉菜单加载。当然你必须导入time。我不确定您的 XPATH 将是什么,我希望这有助于或澄清我正在尝试做的事情。如果这不是您想要的或有疑问,请告诉我
    猜你喜欢
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多