使用 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 可以代替elementToBeClickablevisibilityOfElement 遵循最佳实践是完全正确的。我只是过于谨慎了:/

以上是关于使用 Selenium 和 Python 选择选项的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中使用 selenium 从下拉菜单中选择多个选项

selenium python 针对js生成的下拉列表,如何选择隐藏的选项

如何使用 Selenium Webdriver 和 Python 从这个非选择下拉菜单中选择这个元素

Python Selenium - 灵活列表中的所有选项

如何通过Selenium和Python从没有Select标签的Dropdown中选择最后一个值

RobotFramework Selenium:如何从多选下拉列表中选择多个选项?