如何根据提供的HTML从弹出窗口中找到元素?

时间:2018-07-19 06:53:44

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

这是我的HTML片段:

Screenshot

HTML:

<button class="confirm" tabindex="1" style="display: inline-block; background-color: rgb(140, 212, 245); box-shadow: rgba(140, 212, 245, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px inset;">OK</button>

我试图通过Selenium WebDriver单击“确定”按钮,但它给了我:错误:

no such element: Unable to locate element: {"method":"cssselector","selector":"button[class='confirm']"}

当前,我正在Selenium中使用以下代码:

driver.findElement(By.cssSelector("button[class='confirm']"));

2 个答案:

答案 0 :(得分:0)

您可以尝试使用以下代码:

//button[text()='OK' and @class='confirm']  

但是,请确保此按钮不应出现在任何iframe/frame/frameset中。

在这种情况下,您必须将Web驱动程序的焦点切换到必需的/特定的iframe/frame/frameset才能与该按钮交互。

为此,您可以尝试以下代码:

 driver.switchTo().frame(arg0)  

请注意, arg0 可以是框架编号框架名称作为网络元素的框架。< / p>

希望这会有所帮助。

答案 1 :(得分:0)

根据您共享的 HTML ,您需要诱使 WebDriverwait 使所需的元素可点击,并且您可以使用解决方案:

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.sa-confirm-button-container>button.confirm"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='sa-confirm-button-container']/button[@class='confirm' and contains(.,'OK')]"))).click();