单击展开和折叠按钮 selenium cucumber eclipse
click on an expand & collapse button selenium cucumber eclipse
我试图点击一个 expand/collapse 按钮,我的第一个代码对其中一个按钮有效,但不知何故它对其他两个按钮无效。它是相同的结构,这就是为什么它会成为一个奇怪的问题。
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;
改变
wb = driver.findElement(By.xpath("//[@id='collapseIndkomstrubrikker']"));
到
wb = driver.findElement(By.xpath("//[@data-target='#collapseIndkomstrubrikker']"));
像第二个例子
尝试使用 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);
我的 Eclipse 出了点问题,这就是我的代码最初无法运行的原因。当我重新启动 Eclipse 时,代码有效:)
我试图点击一个 expand/collapse 按钮,我的第一个代码对其中一个按钮有效,但不知何故它对其他两个按钮无效。它是相同的结构,这就是为什么它会成为一个奇怪的问题。
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;
改变 wb = driver.findElement(By.xpath("//[@id='collapseIndkomstrubrikker']")); 到 wb = driver.findElement(By.xpath("//[@data-target='#collapseIndkomstrubrikker']")); 像第二个例子
尝试使用 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);
我的 Eclipse 出了点问题,这就是我的代码最初无法运行的原因。当我重新启动 Eclipse 时,代码有效:)