我正在尝试点击数据单元格td中的复选框,但每次我收到:
org.openqa.selenium.ElementNotVisibleException
例外, 问题是元素已启用但不可见。
以下是页面来源:
var doneCalculations = {};
for (var x = 1; x <= 10; x++) {
for (var i = 1; i <= 10; i++) {;
if (doneCalculations[i+'x'+x]) continue;
doneCalculations[x+'x'+i] = true;
var result = x * i;
console.log(x + ' * ' + i + ' = ' + result);
}
}
但是在代码下面工作并返回。
<table id='table1'>
<thead></thead>
<tbody>
<tr>
<td>
<input id='id1' class='class' type='checkbox'>
<label for='chk1'>
:: before
</label>
</td>
</tr>
<tr>
<td>
<input id='id2' class='class' type='checkbox'>
<label for='chk2'>
:: before
</label>
</td>
</tr>
<tr>
<td>
<input id='id3' class='class' type='checkbox'>
<label for='chk3'>
:: before
</label>
</td>
</tr>
</tbody>
</table>
手动复选框可见且能够选择,但IsDisplayed为false,并且抛出元素不可见异常。
尝试了以下所有方法,但一切都失败了。定位器很好。
定位器:
System.out.println("isDisplayed()"+ td_lblcollection.get(0).isDisplayed()); --> False
System.out.println("isEnabled()"+td_lblcollection.get(0).isEnabled()); --> True
System.out.println("isSelected()"+td_lblcollection.get(0).isSelected()); --> False
方法1:表中的循环
@FindBy(xpath = "//*[@id='table1']/tbody/tr")
List<WebElement> tblLookupSites;
方法2:表中的循环
for (WebElement trElement : tblLookupSites) {
List<WebElement> td_collection = trElement.findElements(By.xpath("td"));
for (WebElement tdElement : td_collection) {
List<WebElement> td_lblcollection =tdElement.findElements(By.xpath("label"));
td_lblcollection.get(0).click();
}
}
方法3:表中的循环
for (WebElement trElement : tblLookupSites) {
List<WebElement> td_collection = trElement.findElements(By.xpath("td"));
for (WebElement tdElement : td_collection) {
List<WebElement> td_lblcollection =tdElement.findElements(By.xpath("input"));
td_lblcollection.get(0).click();
}
}
请建议如何点击此复选框。
使用vue.js创建UI。
答案 0 :(得分:1)
使用以下内容。
driver.findElement(By.xpath(&#34; // * [@ id中=&#39; ID1&#39;]&#34))点击();
答案 1 :(得分:0)
尝试使用JavascriptExecutor
界面点击不可见元素,方法是这样注入一些javascript
-
WebElement element = driver.findElement(By.xpath("//input[@id='id1']"));
JavascriptExecutor js =(JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);
如果它有效,也可以尝试替代方式 - (这在我的项目中使用相同类型的结构) -
driver.findElement(By.xpath("//label[@for='chk1']")).click();