在下拉列表中识别值时遇到问题(Selenium Python)

时间:2016-06-17 08:37:46

标签: python selenium

我正在使用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>  

还有其他方法可以从下拉列表中选择一个值吗?

1 个答案:

答案 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课程。