我试图单击一个展开/折叠按钮,而我的第一个代码对其中一个按钮起作用,但是对于其他两个按钮却不起作用。这就是为什么使它成为一个奇怪问题的原因。
HTML 1
<!-- language: lang-html -->
<button class="collapser__header collapsed " type="button" data-toggle="collapse" data-target="#collapseIndkomstrubrikker" aria-expanded="false" aria-controls="collapseIndkomstrubrikker">Anden indkomst</button>
<div class="collapse" id="collapseIndkomstrubrikker"></div>
<!-- end snippet -->
代码无效
case "Anden indkomst":
try {
WebElement wb;
JavascriptExecutor js = (JavascriptExecutor)driver;
wb = driver.findElement(By.xpath("//*[@data-target='#collapseIndkomstrubrikker']"));
js.executeScript("arguments[0].click();", wb);
} catch (Exception b) {
throw new NoSuchElementException("kunne ikke finde " + knap);
}
break;
HTML 2
<button class="collapser__header collapsed " type="button" data-toggle="collapse" data-target="#collapseFradragrubrikker" aria-expanded="false" aria-controls="collapseFradragrubrikker">Andre fradrag</button>
<div class="collapse" id="collapseFradragrubrikker"></div>
有效的代码2
case "Andre fradrag":
try {
WebElement wb;
JavascriptExecutor js = (JavascriptExecutor)driver;
wb = driver.findElement(By.xpath("//*[@data-target='#collapseFradragrubrikker']"));
js.executeScript("arguments[0].click();", wb);
} catch (Exception b) {
throw new NoSuchElementException("kunne ikke finde " + knap);
}
break;
答案 0 :(得分:0)
更改 wb = driver.findElement(By.xpath(“ // [@ id ='collapseIndkomstrubrikker']”))); 至 wb = driver.findElement(By.xpath(“ // [@ data-target ='#collapseIndkomstrubrikker']”))); 就像第二个例子
答案 1 :(得分:0)
尝试使用WebDriverWait等待元素可点击,如下所示:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement wb;
wb = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@data-target='#collapseIndkomstrubrikker']")));
js.executeScript("arguments[0].click();", wb);
答案 2 :(得分:0)
我的Eclipse出现了一些错误,这就是为什么我的代码最初不起作用的原因。当我重新启动Eclipse时,代码起作用了:)