Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium WebDriver-eCLIPSE-弹出窗口处理-“;“无警报”;异常错误_Eclipse_Selenium_Popupwindow - Fatal编程技术网

Selenium WebDriver-eCLIPSE-弹出窗口处理-“;“无警报”;异常错误

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图标关闭窗口

在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中失败

请帮忙

下面是代码

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;司机:关闭;你能检查一下这个吗?