java - 无法处理 Selenium WebDriver 中的 Ajax 弹出窗口

标签 java ajax selenium-webdriver

我是 Selenium 的新手。我正在尝试在 MacDonald 的登录和订单的 selenium 中制作脚本。但是登录后我无法单击“继续”和任何其他选项,请帮助我。

我的代码是:--

WebDriver selenium= new FirefoxDriver();
selenium.manage().window().maximize();

String baseurl = "http://www.mcdelivery.co.in/";
selenium.get(baseurl);

Thread.sleep(2000); 
Thread.sleep(5000);

WebElement loginbtn = selenium.findElement(By.id("lnkBtnLogin"));
if(loginbtn.isDisplayed()) {
    loginbtn.click();
}

WebElement username = selenium.findElement(By.id("txtMobileNumber"));
if(username.isDisplayed()) {
    username.clear();
    username.sendKeys("******");
}

WebElement pwd = selenium.findElement(By.id("txtMsgPwd"));
if(pwd.isDisplayed()) {
    pwd.sendKeys("******");
}

WebElement submit = selenium.findElement(By.id("btnSubmit"));
if(submit.isDisplayed()) {
    submit.click(); 
    //Alert aler = selenium.switchTo().alert().accept();
    selenium.switchTo().activeElement();         
}

WebElement conti = selenium.findElement(By.id("btnContinue"));
if(conti.isDisplayed()) {
    conti.click();
}

// selenium.close();

运行后报错

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: 
{"method":"id","selector":"btnContinue"}
Command duration or timeout: 31 milliseconds

最佳答案

由于 Continue 按钮是弹出窗口的一部分(加载需要时间),您需要给 webdriver 一些时间来检测它。为此,请使用 Implicit/Explicit waits 超时.

对于上面的内容,您可以像这样在顶部使用隐式超时

selenium.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

每次尝试定位元素时,上面的代码都给了 webdriver 15 秒时间。

此外,在这段代码中,

if(conti.isDisplayed())

{ 

conti.click();

}

由于某些奇怪的原因,在 if ( conti.isDisplayed() ) 中时,Continue 按钮没有被点击。所以,失去那个循环。只需使用 conti.click();。尝试时它起作用了!

关于java - 无法处理 Selenium WebDriver 中的 Ajax 弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26848390/

相关文章:

java |我的 Action 监听器没有被调用

java - 如何从java访问CUPS变量?

javascript - 使用 Javascript 连接到 Winappdriver 中正在运行的进程

java - 带有 div.span 的复选框未点击

java - Selenium 测试在 headless 模式下失败

java - java中如何将一个多维数组的维度传递给另一个多维数组?

java - 当表有八列时,在数据库条目中搜索匹配项

javascript - 在没有 Internet Explorer 关闭框的情况下添加选项以选择框?

c# - IE 11 打开旧的覆盖的 PDF 而不是新的 PDF?

php - 通过三步过程处理大型数组的 csv 导入