2017-01-10 6 views
0

Im неспособно закрыть модальный, когда я получаю доступ к моему предполагаемому URL, я получаю Модальное всплывающее окно. 1. Я попытался ждать и нажав на элемент 2. также попытался близко с помощью кода «боевой готовности» 3. все были неудачными при закрытии всплывающего окна enter image description here enter image description hereНевозможно «закрыть» Модальное всплывающее окно

Спасибо за вашу помощь,

enter image description here

+0

является модальным в отдельном окне IFRAME? – Cathal

+0

@cathal спасибо за ответ, из чего я могу видеть im неспособный идентифицировать любые iframes, пожалуйста, см. Последнее изображение attatched – Gbru

+0

Можете ли вы показать мне, как вы выбираете WebElement? – Cathal

ответ

0
check , whether it is separate window, if it it then will code might be work 


private static Object Handle1; 
private static Object Handle2; 

public static void switchToWindowsPopup() { 
    Set<String> handles = DriverManager.getCurrent().getWindowHandles(); 
    Iterator<String> itr = handles.iterator(); 
    Handle1 = itr.next(); 
    Handle2 = Handle1; 
    while (itr.hasNext()) { 
     lastHandle = itr.next(); 
    } 
    DriverManager.getCurrent().switchTo().window(Handle2.toString()); 
} 

public static void switchToMainWindow() { 
    DriverManager.getCurrent().switchTo().window(Handle1.toString()); 
0

После кода может помочь вам -

driver.findElement(By.xpath("//span[contains(text(),'CLOSE')]")).click(); 

или использовать JavascriptExecuter таким образом -

WebElement element = driver.findElement(By.xpath("//button[@class='close']")); 
JavascriptExecutor js= (JavascriptExecutor)driver; 
js.executeScript("arguments[0].click();", element); 
0

Мое предположение было бы, что для того, чтобы закрыть диалоговое окно, вам нужно попасть в «х». Я предполагаю это, потому что вы ожидаете, что элемент кнопки станет кликабельным, но это никогда не произойдет. Таким образом, идентификатор предложил сделать ваш локатор более конкретны:

@FindBy(xpath = "//button[@class='close']/span") 
WebElement closeButton; 

Пожалуйста, дайте мне знать, если это works..or что произойдет, если он не делает.

+1

Ваш 'XPath' недействителен: вы должны использовать' @ class = 'close'' вместо ' @class == 'close'' – Andersson

+0

спасибо за это! – Cathal

+0

Спасибо, что все методы @Saurabh Gaur работали, кто-нибудь знает, почему я получаю всплывающее окно, появляющееся на другом этапе пользовательской поездки, используя Firefox и geckodriver, но всплывающее dosnt снова появляется при попытке входа через Chrome? – Gbru

0

От комментария

спасибо за быстрый ответ @cathal я получаю ошибку таймаута, что элемент не видно/локатора в состоянии, когда ожидаемое время истечет

На самом деле Ваш локатор не вернуть уникальный результат. Существует несколько элементов close button, которые имеют одинаковое имя класса close.

К сожалению, вы получаете невидимый диалог close button, поэтому у вас проблемы.

Вы должны попробовать что-то, как показано ниже: -

WebDriverWait wait = new WebDriverWait(driver, 10); 
List<WebElement> elements = wait.until(ExpectedConditions 
       .presenceOfAllElementsLocatedBy(By.cssSelector(".close"))); 
for (WebElement element : elements) { 
    if (element.isDisplayed()) { 
     element.click(); 
    } 
} 
+0

Есть ли способ постоянно проверять всплывающие окна и, следовательно, закрывать? – Gbru

Смежные вопросы