我正在使用Selenium(Python)从下拉列表中选择一个值,但我遇到了一些问题。
当我使用Selenium IDE时,它会将下拉列表标识为按钮,如下所示:
driver.find_element_by_xpath("(//button[@type='button'])[2]")
然后我尝试使用以下方法从列表中选择一个值:
Select(driver.find_element_by_xpath("(//button[@type='button'])[2]")).select_by_visible_text("Africa/Juba")
这不起作用,因为它说“选择仅适用于元素,而不适用于按钮。
当我检查元素时,我看不到任何有用的东西可以用来识别下拉(这只是其中的一部分):
<select selectpicker="" ng-options="timezone for timezone in model.timezones" ng-model="newAccount.timeZoneId" class="form-control ng-pristine ng-untouched ng-valid bs-select-hidden" data-live-search="true"> <option value="0" label="Africa/Abidjan">Africa/Abidjan</option><option value="1" label="Africa/Accra">Africa/Accra</option> <option value="2" label="Africa/Addis_Ababa">Africa/Addis_Ababa</option> <option value="3</option></select>
还有其他方法可以从下拉列表中选择一个值吗?
答案 0 :(得分:2)
您使用Xpath
获得的元素是button
。您无法使用Select
按钮。您想获得select
元素。
试试这个:
Select(driver.find_element_by_xpath("//select[@ng-model='newAccount.timeZoneId']")).select_by_visible_text("Africa/Juba")
修改强>
你遇到的问题是有道理的。在您分享的HTML
中,没有包含文字option
的{{1}}元素。如果您将Africa/Juba
更改为Africa/Juba
,它应该可以正常运行。
在评论中,您提到了这个元素:Africa/Algiers
。您的<span class="text">Africa/Juba</span>
示例中缺少此功能。但是HTML
内的span
不应该有效。在处理select
时,您可以使用Select
课程。