蟒蛇分裂。如何选择选项部分中没有名称的下拉列表



我尝试从下拉列表中选择"本地主机",该下拉列表中具有以下html代码:

<select id="server_select">
    <option></option>
    <option>
        Local Host
    </option>
    <option>
        ah005
    </option>
</select>

这是我的python代码,使用splinter模块从下拉列表中选择"本地主机",但失败了。

server_list = browser.find_by_xpath('//select[@id="server_select"]//option[@selected="Local Host"]').first
server_list.click()

我得到了错误:

 Traceback (most recent call last):
  File "splinter_test.py", line 22, in <module>
    server_list = browser.find_by_xpath('//select[@id="server_select"]//option[@selected="Local Host"]').first
  File "/Users/Bibo_MBPR/anaconda/lib/python2.7/site-packages/splinter/element_list.py", line 53, in first
    return self[0]
  File "/Users/Bibo_MBPR/anaconda/lib/python2.7/site-packages/splinter/element_list.py", line 44, in __getitem__
    self.find_by, self.query))
splinter.exceptions.ElementDoesNotExist: no elements could be found with xpath "//select[@id="server_select"]//option[@selected="Local Host"]"

有人可以给我一些建议吗?谢谢

您可以使用

find_by_id来获取下拉列表的浏览器元素,因为它具有id="server_select"选项。然后,您可以通过文本从中选择选项。请尝试以下操作-

server_list = browser.find_by_id('server_select')
server_list.select_by_text("Local Host")

browser.find_option_by_text("Local Host").first.click()

命名选项通常非常有用。但是当它们不存在时,您必须迭代选项以找到正确的选项。

dropdown = browser.find_by_xpath("//select[@id='server_select']")
for option in dropdown.find_by_tag('option'):
    if option.text == "Local Host":
        option.click()
        break

比较之前,您可能需要在option.text上调用strip(),以防它包含额外的空格。

如果顶部的空选项给您带来问题,那么我会将if情况更改为option.text is not None and option.text == "Local Host"

相关内容

  • 没有找到相关文章

最新更新