Selenium WebDriver-eCLIPSE-弹出窗口处理-“;“无警报”;异常错误
在eclipse中,我们尝试用以下2种方法处理同一网站中显示的弹出窗口。 (1) 使用代码Flip.switchTo().frame(“loginIframe”); (2) 使用Alert Good=Flip.switchTo().Alert() Flip是指webdriver,loginframe是指弹出窗口的框架id,Good是指警报参考 下面是我试图自动化的步骤 1) 打开谷歌浏览器 2) 进入 3) 单击“登录” 4) 点击登录 5) 将显示登录弹出窗口 6) 单击右上角的X图标关闭窗口 方法2在步骤5和6失败 网站-显示弹出窗口,并观察到方法1正在工作,但方法2没有工作,并且正在获取org.openqa.selenium.NoAlertPresentException:no alert open 不知道同一个弹出窗口是如何属于同一个网站的,它在方法1中传递,但在方法2中失败 请帮忙 下面是代码Selenium WebDriver-eCLIPSE-弹出窗口处理-“;“无警报”;异常错误,eclipse,selenium,popupwindow,Eclipse,Selenium,Popupwindow,在eclipse中,我们尝试用以下2种方法处理同一网站中显示的弹出窗口。 (1) 使用代码Flip.switchTo().frame(“loginIframe”); (2) 使用Alert Good=Flip.switchTo().Alert() Flip是指webdriver,loginframe是指弹出窗口的框架id,Good是指警报参考 下面是我试图自动化的步骤 1) 打开谷歌浏览器 2) 进入 3) 单击“登录” 4) 点击登录 5) 将显示登录弹出窗口 6) 单击右上角的X图标关闭窗口
package basic;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.Alert;
public class FlipKart{
public static void main(String[]args) throws InterruptedException{
System.setProperty("webdriver.chrome.driver", "C:\\Users\\hp\\workspace\\Selenium\\browser\\chromedriver.exe");
WebDriver Flip = new ChromeDriver();
Flip.get("https://www.snapdeal.com/");
Thread.sleep(1000);
Flip.manage().window().maximize();
Thread.sleep(1000);
Flip.findElement(By.xpath(".//*[@id='sdHeader']/div[4]/div[2]/div/div[3]/div[3]/div/span[1]")).click();
Thread.sleep(1000);
Flip.findElement(By.xpath(".//*[@id='sdHeader']/div[4]/div[2]/div/div[3]/div[3]/div/div/div[2]/div[2]/span[2]/a")).click();
Thread.sleep(1000);
// METHOD 1 - WORKING GOOD
//Flip.switchTo().frame("loginIframe");
//Flip.findElement(By.id("checkUser")).click();
//Thread.sleep(1000);
//Flip.findElement(By.xpath(".//*[@id='close-pop']/i")).click();
//METHOD 2 - GETTING EXCEPTION ERROR
Alert Good = Flip.switchTo().alert();
Good.dismiss();
}
}
Disclease()主要用于单击警报的“取消”按钮。因为没有“取消”按钮,所以方法2失败了
driver.switchTo().alert();
driver.findelement(by.xpath("provide your cross(close)icon path")).click();
一,。首先切换到您的警报
2.然后执行操作
3.对交叉按钮执行单击操作 以下是您问题的答案: 在您的问题
中提到的网站上,而不是方法2,获取org.openqa.selenium.NoAlertPresentException:no alert open
是正确的行为
原因是,如果您通过开发工具
仔细查看弹出窗口上的手机号码/电子邮件
字段等元素,您会发现这些元素嵌入在HTML DOM
本身的iframe
标记中,即
。因此,要处理这些元素,我们必须先切换到iframe,然后执行发送手机号码/电子邮件的操作,或者关闭弹出窗口。在您的第一个案例中,您通过首先切换到iframe来正确处理它们,因此它起了作用
在第二种情况下,您尝试使用Alert
类的帮助,如Alert Good=Flip.switchTo().Alert()
至解除
警报,如良好。解除()代码>。但是由于HTML DOM中没有警报
,因此您得到了NoAlertPresentException
作为org.openqa.selenium.NoAlertPresentException:没有警报打开
如果回答了您的问题,请告诉我。谢谢kapil的回答,是的,弹出窗口中没有取消按钮,只有X图标。所以我猜第5步通过了,只有第6步失败了。因此,您能否建议我如何处理步骤6)单击右上角的X图标以关闭窗口。@badri-方法1无助于您实现此目的?driver.switchtoalert;司机:关闭;你能检查一下这个吗?