简体   繁体   English

如何使用 python 和 selenium 与下拉菜单交互

[英]how to interact with a drop down menu using python and selenium

Here is the element from the webpage which I am trying to interact with:这是我尝试与之交互的网页中的元素:

<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>

Here is the code I used to select it:这是我用来 select 的代码:

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

Now when I try to interact with it in ways such as 'click' or 'sendkeys' it says "element not interactable" .现在,当我尝试以“点击”或“发送键”等方式与其交互时,它会显示“元素不可交互”

How do I interact with this drop down menu?如何与此下拉菜单交互?

The drop down menu might not be loaded by the time you try to interact with it.当您尝试与之交互时,可能不会加载下拉菜单。 You can always induce a wait by doing the following:您始终可以通过执行以下操作来诱导等待:

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

EDIT: I would use the XPATH if at all possible.编辑:如果可能的话,我会使用 XPATH。 Also find_element_by_class_name is deprecated.也不推荐使用find_element_by_class_name Instead use find_element(By.CLASS_NAME, "insert class name here") if you want to use the class name instead of the XPATH.如果要使用 class 名称而不是 XPATH,请改用find_element(By.CLASS_NAME, "insert class name here")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM