找到以角度开发的应用程序的下拉列表的xpath

时间:2017-07-28 04:04:33

标签: java selenium xpath selenium-webdriver

下拉列表的HTML代码:

 <div class="margin-bottom">

      <select ng-class="{'invalid-select':(selectedItem == '-1' &amp;&amp; submitted)}" class="select-lg select-custom ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-required" name="items" ng-model="selectedItem" ng-options="item.id as item.name for item in items" required="" ng-change="onChange()" style="">

     <option value="" selected="selected" class="">Select One</option>
     <option label="Stage Test" value="number:682">Stage Test</option>
     <option label="automation 1" value="number:687">automation 1</option>
     <option label="automation 3" value="number:688">automation 3</option>
     <option label="new co" value="number:690">new co</option></select>
 </div>

我正在使用XPath来获取元素:

Select companySelect = new Select(driver.findElement(By.xpath("//*[@ng-model='selectedItem']")));

2 个答案:

答案 0 :(得分:0)

尝试这一点,这是在我身边: - 我已经使用了你的HTML

//*[@name='items' and @ng-model='selectedItem']

屏幕截图: - enter image description here

我希望这对你有用。

如果要从此列表中选择一个选项,请使用

//*[@name='items' and @ng-model='selectedItem']/option[3]

现在将选择&#34;自动化1&#34;

答案 1 :(得分:0)

以下是您的问题的答案:

在构建xpath元素的Select时,您已尝试获取属性ng-model的帮助。此属性与使用AngularJS构建的应用程序非常相似,当用作构建xpath的唯一属性时,它可能无法将元素标识为HTML DOM上的唯一元素。

根据您提供的HTMLSelect代码包含name。根据最佳做法,我们应首先注意idname定位器,因为它们始终是唯一的。考虑保持简单的步骤,以便轻松调试错误。以下是根据您的HTML选择阶段测试的示例代码块:

WebElement my_dropdown = driver.findElement(By.name("items"))
Select companySelect = new Select(my_dropdown);
companySelect.selectByVisibleText("Stage Test");

如果这回答你的问题,请告诉我。