我尝试从下拉列表中选择“本地主机”,其中包含以下html代码:
<select id="server_select">
<option></option>
<option>
Local Host
</option>
<option>
ah005
</option>
</select>
这是我的python代码,使用splinter模块从下拉列表中选择“Local Host”但失败了。
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"]"
有人可以给我一些建议吗?感谢
答案 0 :(得分:1)
您可以使用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()
或者,
{{1}}
答案 1 :(得分:0)
命名选项通常非常有用。但是当它们不存在时,你必须迭代选项才能找到合适的选项。
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
如果它包含额外的空格,您可能需要在strip()
之前调用option.text
。
如果顶部的空选项导致您出现问题,我会将if
案例更改为option.text is not None and option.text == "Local Host"
。