нажмите на кнопку развернуть и свернуть селеновое огуречное затмение - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь нажать на кнопку развернуть / свернуть, и мой первый код работает для одной из кнопок, но почему-то не работает для двух других. Это та же самая структура, поэтому она делает это странной проблемой.

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;

Ответы [ 3 ]

0 голосов
/ 06 февраля 2020

Попробуйте использовать 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);
0 голосов
/ 12 февраля 2020

Что-то не так с моим Eclipse, из-за чего мой код вообще не работал. Когда я перезапустил Eclipse, код работал:)

0 голосов
/ 05 февраля 2020

change wb = driver.findElement (By.xpath ("// [@ id = 'collapseIndkomstrubrikker']")); to wb = driver.findElement (By.xpath ("// [@ data-target = '# collapseIndkomstrubrikker']")); как во втором примере

...