首页 > 解决方案 > 使用 Select_by_value 函数传递字符串变量时出现 InvalidSelectorException

问题描述

我试图通过将一个值传递给一个字符串变量来选择它。但是得到 InvalidSelectorException:消息:无效选择器:指定了无效或非法的选择器。

    def Assignments(url,assignto,count):
           sta = Select(driver.find_element_by_id("bulk_status"))
           sta.select_by_value('Assigned')
           sta = Select(driver.find_element_by_id("bulk_assigned_individual"))
           sta.select_by_value(str(assignto))
    Assignments(UrlForIssues[1],str(teammate),1)
    
    

UrlForIssues - 它是一个列表或 Url 队友 - 字符串变量计数用于其他内容,可以忽略。

现在的问题是当我运行程序时它会抛出异常。

InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified

当我将一些字符串传递给函数 select_by_value() 时。喜欢:

select_by_value('abc')

它工作正常,只有将其作为变量传递时才会出现错误。

可用的选项集。

<select name="bulk_assigned_individual"id="bulk_assigned_individual">
  <option value="brand-validator-queue">1 - bvq</option>
  <option value="atmakb">98 - Bharath</option>
  <option value="bvarn">98 - varun </option>
  <option value="archawla">98 - Aryan </option>
  <option value="jhiman">98 - Himanshu </option>
</select>

我已将所有值存储在一个文件中,并在列表中读取它。

team = open("team.txt",'r')
teammates = team.readlines()

然后在 for 循环中为我们拥有的所有选项调用 Assignments()。

for teammate in teammates:
     Assignments(UrlForIssues[1],str(teammate),1)

标签: python-3.xseleniumexceptiondrop-down-menucss-selectors

解决方案


尝试如下并确认。

由于您将其作为String变量传递,因此以下语句将返回False

print(assignto == options.get_attribute("value"))

因此,在for循环中检查该assignto值是否在选项中value,然后选择该选项:

def Assignments(url,assignto,count):
    sta = Select(driver.find_element_by_id("bulk_status"))
    sta.select_by_value('Assigned')
    sta = Select(driver.find_element_by_id("bulk_assigned_individual")).options
    for opt in options:
        if assignto in options.get_attribute("value"):
            opt.click()
            break

推荐阅读