selenium在python中通过可见文本选择

时间:2017-05-05 19:35:38

标签: python selenium

您好我正在尝试使用selenium从下拉列表中使用实际文本而不是值选项来选择项目。我的脚本将状态从列表中拉出,并遍历选择与列表匹配的下拉列表的状态。 当我尝试以下代码时,它会抛出一个错误:

for agentinfo1, agentstate1 in zip(agentinfo, agentstate):
    select2 = driver.find_element_by_css_selector("#selst" %agentstate1)
    select2.click()
  

select2 = driver.find_element_by_css_selector("#selst"%agentstate1)   TypeError:不是在字符串格式化期间转换的所有参数

我想知道错误是否被抛出,因为当我抓住我放入列表中的数据时,我追加了一个" \ n"但即使我拿出那些代码它也行不通。

1 个答案:

答案 0 :(得分:1)

您正在使用css ID而不是CSS类。如果您的文本与变量

中的文本完全相同,则select2是指向select元素的指针
from selenium.webdriver.support.ui import Select

for agentinfo1, agentstate1 in zip(agentinfo, agentstate):
    select2 = Select(self.driver.find_element_by_id("<some id of the select element>")).select_by_visible_text(agentstate)

如果它只是部分匹配,你可以试试这个(不区分大小写的部分匹配):

from selenium.webdriver.support.ui import Select

for agentinfo1, agentstate1 in zip(agentinfo, agentstate):
    select2 = Select(self.driver.find_element_by_id("<some id of the select element>"))
    for each_option in select2.options:
        if agentstate.lower in each_option.text.lower:
            select2.select_by_index(int(each_option.get_attribute("value")))