下面是我的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);
但它不起作用
答案 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();
如果这回答你的问题,请告诉我。