2017-07-18 95 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(); 

讓我知道如果這個回答你的問題。