使用 Selenium python 驱动程序选择带有文本的 <option> 的正确方法是啥[重复]

Posted

技术标签:

【中文标题】使用 Selenium python 驱动程序选择带有文本的 <option> 的正确方法是啥[重复]【英文标题】:what is the correct way to select an <option> with text using Selenium's python driver [duplicate]使用 Selenium python 驱动程序选择带有文本的 <option> 的正确方法是什么[重复] 【发布时间】:2019-10-02 23:44:35 【问题描述】:

我正在使用 selenium 网络驱动程序进行网络抓取。我已经处理了一个选项值,但我必须处理选项文本。我必须抓取一个选项文本并传递给your_choice=driver.find_element_by_xpath("//select/option[@value = ]".format(b))。下面是代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from bs4 import BeautifulSoup

driver = webdriver.Firefox(executable_path='./geckodriver')
url = 'https://ipr.etsi.org'
driver.get(url)
button = driver.find_element_by_id(("btnConfirm"))
button.click()
select_element = Select(driver.find_element_by_name("ctl00$cphMain$lstCompany"))
data = []
for option in select_element.options:
    data.append(option.get_attribute('value'))
for a in data:
    b = a
    your_choice = driver.find_element_by_xpath("//select/option[@value = ]".format(b))
    # continue
    your_choice.click()
python_button = driver.find_element_by_id(("ctl00_cphMain_btnSearch"))
python_button.click()

上面是我使用选项值完成的代码。现在我必须用选项文本来做。

【问题讨论】:

忽略选择的答案......这真的很旧。而是使用this answer。 另外,任何时候你有任何问题,你都应该先做一些谷歌搜索和阅读。此问题已在本网站和其他网站以及博客、文章等中被多次提出。您可以在上面的链接中看到该问题是在 2011 年提出的。 【参考方案1】:

因为您正在考虑按文本选择。

将 option.get_attribute('value') 更改为

    data.append(option.text) #this will add 'Optis Cellular Technology','Orange',etc to data

和“//选择/选项[@value = ]”到

    if a != '':   #to skip the first option because it's empty
      your_choice = driver.find_element_by_xpath("//select/option[text()='0']".format(a))
      your_choice.click() 

【讨论】:

如果您添加一个简短的解释,这个答案会更好。仅代码的答案可能很难理解,因为不清楚解决方案是位于第一行、最后一行、介于两者之间,还是需要每一行。【参考方案2】:

如果你想通过可见文本进行选择,pythonselect_by_visible_text 方法。您需要做的就是像这样捕获option 元素:

select = Select(driver.find_element_by_id("option_id"))

或通过您选择的任何其他选择器,然后只需使用以下功能:

select.select_by_visible_text("visible_text")

【讨论】:

以上是关于使用 Selenium python 驱动程序选择带有文本的 <option> 的正确方法是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python selenium 选择一个元素(文本)

Selenium驱动如何选择?

使用Chrome驱动程序通过python和selenium在指定位置下载文件

使用 Python + Selenium 选择 iframe

使用 Selenium 和 Python 选择选项

使用 selenium 根据输入单击链接 [python]