2017-07-18 96 views
0

下面是我的HTML代码,我试图关闭使用硒的webdriver对话框通过硒webdriver的一个HTML对话。无法关闭使用Java

<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); 

但它不工作


+1

您可以添加您尝试关闭对话框的Java代码吗?另外,如果您可以添加更多周边HTML以查看对话的详细信息。 – MKay

+0

跨度在交互时不可见的原因之一是因为在选择跨度之前,您可能需要等待某个事件,以便它可以显示,可点击等。 – Rostech

回答

0

也许当您选择跨度也尚未出现。 你要等到它是可见的。你可以做这样的事情。 (在C#中,但你会很容易转化成Java)

WebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(10)) 
       .Until(ExpectedConditions.ElementIsVisible(By.TagName("od-ui-dialog-close-abc"))); 
element.Click(); 
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(); 

让我知道如果这个回答你的问题。