使用Selenium和Java进行测试自动化。
有一个页面必须与IE(而不是Chrome)一起运行。我相信它也使用Coldfusion。无论如何,单击箭头会弹出复选框菜单。但是,此菜单不是普通的html,而是Java脚本(请参见下文)。这只是javascript函数的一部分。
我需要选择一个选项。 基本上,没有Direct。我打印页面源,然后尝试做一个(driver.findElements(By.xpath(“ // input”))返回0个元素。因此,我不确定如何选择一个框。
使用大量的String操作,我可以找到选项的索引(通过查找省略号;“)并进行一些替换。我可以打开菜单,但是现在呢?建议的一件事是做一个动作。 sendKeys(Keys.ARROWDOWN)根据列表中选项的位置,但是向下箭头而不是向下列表中的项目,而是移动滚动条。
是否有人遇到过类似问题或有建议? (也许使用javascript执行程序?)
<SCRIPT defer>
var strInnerHTML = '<div>';
strInnerHTML += '<form action="" onsubmit="return false;">';
strInnerHTML += '<span class="checkboxdropdown">';
strInnerHTML += '<input type=\"checkbox\" id=\"_78\" name=\"cbusers\"
value=\"78\"><label for=\"_78\" HIDEFOCUS=\"true\" style=\"white-
space:nowrap; text-overflow:ellipsis;\">Option 1</label><br>
<input type=\"checkbox\" id=\"_90\" name=\"cbusers\" value=\"90\"><label
for=\"_90\" HIDEFOCUS=\"true\" style=\"white-space:nowrap; text-
overflow:ellipsis;\">Option 2</label><br><input
type=\"checkbox\" id=\"_139\" name=\"cbusers\" value=\"139\"><label
for=\"_139\" HIDEFOCUS=\"true\" style=\"white-space:nowrap; text-
overflow:ellipsis;\">Option 3</label><br>
答案 0 :(得分:0)
在JavaScript中,硒库中有一个名为“ until”的部分,因此Java中可能存在类似的内容。
在JS中:
(async ()=>{
let element = driver.findElement({id: "example"});
return await driver.wait(await until.elementIsVisible(element)).then(async ()=>{
return await element.click();
});
})();
如果您等到元素显示在页面上之后才开始与它们进行交互,那么您可能会有更多的运气。
对不起,我仍然无法在Java中帮忙
答案 1 :(得分:0)
按名称:
List<WebElement> checkbox = driver.findElements(By.name("cbusers"));
checkbox.get(0).click();
通过cssSelector:
List<WebElement> checkbox = driver.findElements(By.cssSelector("input[type='checkbox']"));
checkbox.get(0).click();
通过tagName:
List<WebElement> checkbox = driver.findElements(By.tagName("label"));
checkbox.get(0).click();
使用JavaScript:
WebElement checkbox = driver.findElement(By.name("cbusers"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", checkbox );