使用 Selenium 和 Python 选择选项
Posted
技术标签:
【中文标题】使用 Selenium 和 Python 选择选项【英文标题】:Selecting options using Selenium and Python 【发布时间】:2021-12-27 23:16:21 【问题描述】:我知道有几个 selenium 选项选择的例子。尽管如此,我仍然无法选择一个特定的网站。 https://www.gks.ru/dbscripts/munst/munst20/DBInet.cgi 我想在左上角选择 Excel 选项。 html 是 n 个附件
我试过这样靠近酒吧
for option in el.find_elements(By.TAG_NAME,'option'):
print(option.text)
if option.text == 'CSV':
option.click() # select() in earlier versions of webdriver
break
我还使用了 find_elements by class 和 css_selector
然后我用了
select = Select(driver.find_element(By.TAG_NAME,'Select'))
select.select_by_visible_text('Excel')
它也找不到元素
有人可以帮忙吗?
【问题讨论】:
【参考方案1】:要使用Selenium从html-select标签中选择带有文本为CSV的select-options,您需要为element_to_be_clickable()
诱导WebDriverWait和您可以使用以下任一Locator Strategies:
使用CSS_SELECTOR
:
select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select.Select[name='Format']"))))
select.select_by_visible_text("CSV")
使用XPATH
:
select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@class='Select' and @name='Format']"))))
select.select_by_visible_text("CSV")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
参考文献
您可以在以下位置找到一些相关讨论:
How to select an option from the dropdown menu using Selenium and Python【讨论】:
这里只是加点。这是一个下拉元素,所以我相信使用presenceOfElement
可以代替elementToBeClickable
或visibilityOfElement
?
遵循最佳实践是完全正确的。我只是过于谨慎了:/以上是关于使用 Selenium 和 Python 选择选项的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中使用 selenium 从下拉菜单中选择多个选项
selenium python 针对js生成的下拉列表,如何选择隐藏的选项
如何使用 Selenium Webdriver 和 Python 从这个非选择下拉菜单中选择这个元素