在我的应用程序中,有一个包含在范围
中的列表框span class ="某些课程" unselectable =" on">请选择一个实体
<li ...
<dd class="some class" style="...." >Please select an entity</dd>
<li ...
<dd class="some class" style="...." >First Element</dd>
<li ...
<dd class="some class" style="...." >Second Element</dd>
<li ...
<dd class="some class" style="...." >last Element</dd>
我想根据测试用例从列表中选择所需的元素。
要实现这一点,我点击顶部元素,这会导致列表的扩展。 然后我试图使用动态xpath表达式找到我想要的元素。 如果我找到该元素,我会对其执行单击操作。 然后我回去检查是否正确选择了元素。 以下代码在Firefox上的运行非常一致(100%),但它在Chrome上的一致性约为40%。知道为什么会这样吗?
public boolean SelectEntity(String EntityType) {
WebElement topElement = Driver.Instance.findElement(By.cssSelector("span[class=\"k-select\"]"));
WebDriverWait wait = new WebDriverWait(Driver.Instance, 3);
wait.until(ExpectedConditions.elementToBeClickable(topElement));
topElement.click();
String finalXPath = subXpathEntityNameFirstPart + EntityType+ subXpathEntityNameEndPart;
wait = new WebDriverWait(Driver.Instance, 3);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath(finalXPath)));
WebElement listElement = Driver.Instance.findElement(By.xpath(finalXPath));
if (listElement != null) {
listElement.click();
String selectedElementXPath = "//span[text()='" + EntityType+ "']";
try{
WebElement selectedDropDownElement = Driver.Instance.findElement(By.xpath(selectedElementXPath));
if (selectedDropDownElement != null) {
return true;
}
} catch(Exception e) {
return false;
}
}
}