![](/img/trans.png)
[英]How to Handle linkedIn authorization Pop up in selenium webdriver using Java?
[英]Unable to Handle Ajax Pop up in 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
由于“ 继续”按钮是弹出窗口的一部分(需要一些时间来加载),因此您需要花一些时间让webdriver检测它。 为此,使用Implicit / Explicit等待给出超时。
对于上面,你可以像这样使用顶部的隐式超时 ;
selenium.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
每次尝试定位元素时,上面给webdriver一个15秒的时间。
此外,在此代码中,
if(conti.isDisplayed())
{
conti.click();
}
由于某些奇怪的原因,在if(conti.isDisplayed())内部没有点击 “ 继续”按钮 。 所以,失去那个循环。 只需使用conti.click(); 。 它试用了!
你好切换到弹出窗口之后使用某种显式等待
boolean ajaxPopup = new WebDriverWait(driver,10).until(ExpectedConditions
.visibilityOfElementLocated(By.id("btnContinue"))) != null;
Assert.assertTrue(ajaxPopup);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.