我有一个包含多个选项的下拉列表。我想在下拉列表中获取所有可用选项,然后将其与我期望在那里的值列表进行比较。
以下是下拉列表的HTML。
<select id="ctl00_cphMainContent_dq14_response" name="ctl00$cphMainContent$dq14$response">
<option value="0" selected="selected">Please Select...</option>
<option value="253">DEP900</option>
<option value="252">DEP800</option>
<option value="251">DEP700</option>
<option value="250">DEP600</option>
<option value="248">DEP400</option>
<option value="247">DEP300</option>
<option value="246">DEP200</option>
<option value="245">DEP100</option>
<option value="249">DEP500</option>
<option value="254">DEP1000</option>
</select>
我使用下面的代码来获取下拉列表中的所有文本值,然后与我期望的值进行比较。
List<Element> options = driver.getElements(AppObjects.Basic1_Dropdown);
for(Element opt : options){
String actualtext = opt.getText();
@SuppressWarnings("rawtypes")
List listA = Arrays.asList("Please Select...", "DEP900", "DEP800", "DEP700", "DEP600", "DEP400", "DEP300", "DEP200", "DEP100", "DEP500", "DEP1000");
Assert.assertEquals(actualtext, listA);
}
此测试对我失败,因为返回的文本位于不同的行。我得到一个错误,说实际文本是(没有破折号):
- DEP900
- DEP800
- DEP700
- DEP600
- DEP400
- DEP300
- DEP200
- DEP100
- DEP500
- DEP1000
但预期的文字是DEP900,DEP800,DEP700,DEP600,DEP400,DEP300,DEP200,DEP100,DEP500,DEP1000
如何更改代码以使预期文本与实际文本匹配。我是否需要从actualtext变量中删除空格,或将它们添加到listA?
我也尝试将列表A更改为以下内容。即使我的错误消息中的实际和预期文本看起来相同,我仍然没有得到实际和预期的文本匹配。
List listA = Arrays.asList("Please Select... \nDEP900 \nDEP800 \nDEP700 \nDEP600 \nDEP400 \nDEP300 \nDEP200 \nDEP100 \nDEP500 \nDEP1000");
答案 0 :(得分:0)
您正在比较actualtext
这是一个字符串,而listA
是一个列表。这应该不起作用
而是创建第二个列表,该列表应包含选项列表中元素的所有文本值。您应该将此列表与listA进行比较。
List<String> listA = Arrays.asList("Please Select...", "DEP900", "DEP800", "DEP700", "DEP600", "DEP400", "DEP300", "DEP200", "DEP100", "DEP500", "DEP1000");
List<String> listB = new ArrayList();
List<Element> options = driver.getElements(AppObjects.Basic1_Dropdown);
for(Element opt : options){
String actualtext = opt.getText();
listB.add(actualtext);
}
Assert.assertEquals(listB, listA);
答案 1 :(得分:0)
以下代码最终使它对我有用。白色空间造成了很多我的问题。
List<String> listA = new ArrayList<String>();
listA.add("Please Select...\nDEP900\nDEP800\nDEP700\nDEP600\nDEP400\nDEP300\nDEP200\nDEP100\nDEP500\nDEP1000");
System.out.println(listA);
List<String> listB = new ArrayList<String>();
List<Element> options = driver.getElements(AppObjects.Basic1_Dropdown);
for(Element opt : options){
String actualtext = opt.getText();
listB.add(actualtext);
System.out.println(listB);
}
Assert.assertEquals(listB, listA);