Selenium-eCLIPSE-WebDriver警报处理-查询

Selenium-eCLIPSE-WebDriver警报处理-查询,eclipse,selenium,webdriver,Eclipse,Selenium,Webdriver,在eclipse中,我打算自动执行以下步骤 (1) 打开谷歌浏览器 (2) 进入 (3) 最大化窗口 (4) (几秒钟后),网站会显示一个新的弹出窗口进行登录。 (5) 只需使用右上角的“X”图标关闭弹出窗口 已在代码中将警报窗口命名为sharp,但 在代码上,Alert Sharp=Flip.switchTo().Alert();获取警告信息为“未使用局部变量sharp的值” 执行时,不执行步骤4和5。使用了Sharp.disclose();同样,但仍然没有失败 已经为相同的问题编写了下面的代

在eclipse中,我打算自动执行以下步骤 (1) 打开谷歌浏览器 (2) 进入 (3) 最大化窗口 (4) (几秒钟后),网站会显示一个新的弹出窗口进行登录。 (5) 只需使用右上角的“X”图标关闭弹出窗口

已在代码中将警报窗口命名为sharp,但

在代码上,Alert Sharp=Flip.switchTo().Alert();获取警告信息为“未使用局部变量sharp的值”

执行时,不执行步骤4和5。使用了Sharp.disclose();同样,但仍然没有失败

已经为相同的问题编写了下面的代码。请澄清

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.flipkart.com/");
    Flip.manage().window().maximize();
    Thread.sleep(5000); //FLIPKART CODE
    Alert Sharp = Flip.switchTo().alert();// pop -up window shown
//单击右上角的X图标关闭窗口

Flip.findElement(By.xpath("/html/body/div[2]/div/div/button")).click(); 
    }

}

尝试使用以下代码-

driver.findElement(By.xpath("/html/body/div[2]/div/div/button")).click();
编辑


Flipkart的登录分区是一个单独的分区,它既不包含在警报中,也不包含在弹出窗口/框架中。因此,只需使用xpath定位元素[X]并单击该元素即可关闭登录窗口。 下面这个简单的陈述对我很有用

删除

Thread.sleep(5000); //FLIPKART CODE
    Alert Sharp = Flip.switchTo().alert();
driver.findElement(By.xpath("/html/body/div[3]/div/div/button")).click();
保存

Thread.sleep(5000); //FLIPKART CODE
    Alert Sharp = Flip.switchTo().alert();
driver.findElement(By.xpath("/html/body/div[3]/div/div/button")).click();

以下是你问题的答案:

正如你提到的
网站显示了一个新的弹出窗口来登录。只要使用右上角的“X”图标关闭弹出窗口即可
如果您试图通过
开发工具
定位元素,弹出窗口将从
HTML DOM中弹出。因此,我们无法像您尝试的那样通过
Alert
类处理此弹出窗口
Alert Sharp=Flip.switchTo().Alert()。相反,我们将通过
WebDriver
关闭弹出窗口,如下所示:

值得一提的是,弹出窗口会在一段时间后出现,因此我们应该引入一些
明确的提示,即
WebDriverWait
,以便弹出窗口出现


如果这能回答您的问题,请告诉我。

只有xpath可以。等待警报将抛出TimeoutExcpetion,因为页面源中没有警报。@Mkay-是的,你是对的。我正在更新我的答案。感谢driver.findelelement(By.xpath(“/html/body/div[3]/div/div/buto‌​)。单击();不工作。selenium无法识别弹出窗口。错误消息显示不存在具有给定xpath的web元素。正如您所提到的,该网站显示了一个新的弹出窗口进行登录,我将其签出,并且没有出现这样的窗口。为此,你必须归纳出一些明确的观点。更新my answer.driver.findElement(By.xpath(“/html/body/div[3]/div/div/button”)。单击();不工作。selenium无法识别弹出窗口。错误消息显示不存在具有给定xpath的web元素。