如何通过Selenium和Java提供的HTML单击带有“继续”的文本的按钮?

时间:2018-07-30 13:40:58

标签: java selenium selenium-webdriver xpath css-selectors

我试图在所附的弹出窗口屏幕中单击“ 继续”按钮。但是,正常的硒“单击”不起作用。请告知如何在此弹出窗口中单击继续按钮。上窗口?

enter image description here

按钮的HTML:

<button class="oval-btn last-popup-btn startang teal track-564677" 
data-track="{&quot;loc&quot;:&quot;popup&quot;,&quot;nm&quot;:&quot;tpg-tool-start-popup&quot;}">Continue</button>

3 个答案:

答案 0 :(得分:0)

在按下按钮之前,您还应该检查页面是否已加载。

   JavascriptExecutor executor = (JavascriptExecutor) driver;
   executor.executeScript ("return document.readyState").toString().equals("complete");

使用JavascriptExecutor添加按钮。

   JavascriptExecutor executor = (JavascriptExecutor) driver;
   executor.executeScript("arguments[0].click();", driver.findElement(By.//yourXPath//););

答案 1 :(得分:0)

首先检查这是弹出窗口还是iframe: 如果是iframe,请先切换到它,然后执行点击操作。

如果正常点击不起作用,则可以使用JavascriptExecutor或Actions类: 使用Actions类的click方法:

WebElement element = driver.findElement(By.xpath("//button[contains(.,'Continue')]"));

public static void actionClick(WebDriver driver, WebElement element) {
        Actions actions = new Actions(driver);
        actions.moveToElement(element).click().build().perform();
    }

使用JavacsriptExecutor方法:

public static void jsClick(WebDriver driver, WebElement element) {
        ((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);
    }

希望对您有帮助:)

答案 2 :(得分:0)

根据您共享的 HTML ,以文本为 Continue 的元素调用元素上的click(),您需要引入 WebDriverWait 为所需的元素可点击,您可以使用以下任一解决方案:

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.oval-btn.last-popup-btn.startang.teal"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(@class,'track-')][contains(.,'Continue')]"))).click();