单击展开和折叠按钮 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 时,代码有效:)