下拉列表的HTML代码:
<div class="margin-bottom">
<select ng-class="{'invalid-select':(selectedItem == '-1' && 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']")));
答案 0 :(得分:0)
尝试这一点,这是在我身边: - 我已经使用了你的HTML
//*[@name='items' and @ng-model='selectedItem']
我希望这对你有用。
如果要从此列表中选择一个选项,请使用
//*[@name='items' and @ng-model='selectedItem']/option[3]
现在将选择&#34;自动化1&#34;
答案 1 :(得分:0)
以下是您的问题的答案:
在构建xpath
元素的Select
时,您已尝试获取属性ng-model
的帮助。此属性与使用AngularJS
构建的应用程序非常相似,当用作构建xpath
的唯一属性时,它可能无法将元素标识为HTML DOM
上的唯一元素。
根据您提供的HTML
,Select
代码包含name
。根据最佳做法,我们应首先注意id
或name
定位器,因为它们始终是唯一的。考虑保持简单的步骤,以便轻松调试错误。以下是根据您的HTML选择阶段测试的示例代码块:
WebElement my_dropdown = driver.findElement(By.name("items"))
Select companySelect = new Select(my_dropdown);
companySelect.selectByVisibleText("Stage Test");
如果这回答你的问题,请告诉我。