2017-08-08 50 views
1

我遇到了使用硒关闭登录请求的问题。如何关闭登录请求窗口?

我正在做一些自动测试的网站会不时请求登录。

这是已知的问题,你所要做的就是关闭登录请求,我正在为此编写Java脚本。有点这个我的小代码似乎没有做任何事情。

WebDriver webDriverInstance = handl.browser; 
webDriverInstance.switchTo().alert().dismiss(); 
webDriverInstance.switchTo().defaultContent(); 

任何想法为什么?

+0

有没有验证弹出? –

+1

像: - https://staging.carfax.si/ –

+0

@ PapeK24我检查了你喜欢的链接。这是一个身份验证弹出,我想知道,你是否试图关闭身份验证弹出而不传递任何用户名/密码值? –

回答

1

看来的webdriver的警报并没有为我工作,因为登录请求不涨JavaScript警告事件改变标志设置为false。所以没有什么可检测或切换到。

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_ESCAPE); 
robot.keyRelease(KeyEvent.VK_ESCAPE); 

谢谢大家的帮助:

通过这段代码,只需发送ESCAPE键浏览器解决。

2

你可以做的是先检查是否有对不

public boolean isAlertPresent() { 
    try{ 
     WebDriverWait wait = new WebDriverWait(driver, 5); 
     wait.until(ExpectedConditions.alertIsPresent()); 
     return true; 
    } 
    catch (NoAlertPresentException noAlert) { 
     return false; 
    } 
    catch (TimeoutException timeOutEx){ 
     return false; 
    } 
} 

弹出存在,如果它存在,那么你可以接受它像

WebDriverWait wait = new WebDriverWait(driver, 10);  
Alert alert = wait.until(ExpectedConditions.alertIsPresent()); 
alert.accept(); 

OR

JavascriptExecutor为你工作。请注意,您应该在点击调用警报的事件之前执行它。

((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }"); 

注意: - 请勿在点击调用警报确认框的事件后使用它。以上代码默认情况下将确认框设置为true表示如果调用该页面上的所有确认框,则表示您接受/单击确定。如果你想关闭提醒

希望它会帮助你:)

+0

我会检查并让你知道 – PapeK24

+0

很酷..我已经添加了JavaScriptExecutor代码也。如果在页面上随时调用,它会接受你的所有警报。 –

+0

似乎不适合我。可能不是一个警告,因为你的代码等待,直到超时。我可能会尝试发送ESC键或其他...感谢您的帮助。 – PapeK24