无法使用Java通过Selenium Webdriver关闭HTML对话框

时间:2017-07-18 07:32:35

标签: java jquery selenium

下面是我的HTML代码,我正在尝试使用selenium webdriver关闭对话框。

    <div class="ui-dialog dialog ">
    <div class="od-ui-dialog-content dialog_content">
    <div class="od-ui-dialog-box ui_dialog_box">
    <div class="od-ui-dialog-image-abc”></div> 
    <div class="od-ui-dialog-box-header dialog_box_header"></div>
    <div class="dialog_close_abc od-ui-dialog-abc”>
    <span class="od-ui-dialog-close-abc”>r</span> 
    <div  class="od-ui-dialog-box-content "></div> 
     <div  class="od-ui-dialog-box-footer dialog_footer">
    </div>  </div> </div>

我已尝试过这段代码,但它并没有为我工作。

WebElement element = driver.findElement(By.className("od-ui-dialog-close-abc"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element); 

但它不起作用

2 个答案:

答案 0 :(得分:0)

当你选择跨度时,它可能还不可见。 你应该等到它可见。你可以做这样的事情。 (在C#中你可以很容易地将它转换为java)

WebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(10))
                .Until(ExpectedConditions.ElementIsVisible(By.TagName("od-ui-dialog-close-abc")));
element.Click();

答案 1 :(得分:0)

以下是您的问题的答案:

根据您提供的HTML,您可以使用以下代码行关闭对话框:

driver.findElement(By.xpath("//span[@class='od-ui-dialog-close-abc' and text()='r']")).click();

如果您遇到ElementNotVisible异常,可以诱导ExplicitWait等待元素可点击,如下所示:

WebDriverWait wait8 = new WebDriverWait(driver, 10);
WebElement element8 = wait8.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='od-ui-dialog-close-abc' and text()='r']")));
element8.click();

如果这回答你的问题,请告诉我。