查看javascript警报时,driver.close不起作用

查看javascript警报时,driver.close不起作用,java,selenium,Java,Selenium,如果注释掉driver.close()部分,以下代码将正确执行。但是,如果我使用它运行程序,程序会失败并给出错误 同样的程序不能在Chrome浏览器中运行,只能在Firefox中运行。好心的建议 import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.

如果注释掉driver.close()部分,以下代码将正确执行。但是,如果我使用它运行程序,程序会失败并给出错误

同样的程序不能在Chrome浏览器中运行,只能在Firefox中运行。好心的建议

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class JavaAlerts 
{
public static void main(String args[])
{
System.setProperty( "webdriver.chrome.driver", "C:\\chromedriver.exe");
WebDriver driver= new FirefoxDriver();
driver.get("http://tizag.com/javascriptT/javascriptalert.php");
driver.findElement(By.xpath("//input[@value='Confirmation Alert']")).click();
driver.close();
}
}
您需要切换到()警报并首先关闭警报并关闭驱动程序

您需要切换到()警报并首先关闭警报并关闭驱动程序

[注释中的代码]

切换到警报后,您无需再次切换到警报,因为驾驶员目前将处于警报状态。将其分配给警报对象,然后接受或打印它,或者执行任何您想执行的操作

[注释中的代码]

切换到警报后,您无需再次切换到警报,因为驾驶员当前将处于警报状态。将其分配给警报对象,然后接受或打印它,或者执行任何您想执行的操作

我将此选项与JUnit一起使用,以在关闭时不获取错误消息:

  @After
  public void quitDriver() throws Exception {


        // driver.quit();

      Runtime.getRuntime().exec("taskkill /F /IM firefox.exe");
      Thread.sleep(3000);
      Runtime.getRuntime().exec("taskkill /F /IM plugin-container.exe");
      Runtime.getRuntime().exec("taskkill /F /IM WerFault.exe");

  }
我还看到你们都在加载Crome属性并启动Firefox。 你应该做其中一个(不是一个很好的例子):


我将其与JUnit一起使用,以在关闭时不获取错误消息:

  @After
  public void quitDriver() throws Exception {


        // driver.quit();

      Runtime.getRuntime().exec("taskkill /F /IM firefox.exe");
      Thread.sleep(3000);
      Runtime.getRuntime().exec("taskkill /F /IM plugin-container.exe");
      Runtime.getRuntime().exec("taskkill /F /IM WerFault.exe");

  }
我还看到你们都在加载Crome属性并启动Firefox。 你应该做其中一个(不是一个很好的例子):



这是错误消息。线程“main”org.openqa.selenium.unhandleAlertException中的异常:意外的模态对话框(文本:您确定要向我们提供您房子的契据吗?):您确定要向我们提供您房子的契据吗?生成信息:版本:“2.46.0”,修订版:“切换到警报后,无需再次切换。将其分配给警报对象,然后接受它–将其添加到问题中,并将其作为答案删除,然后检查我的更新答案。这是错误消息。线程“main”org.openqa.selenium.unhandleAlertException中的异常:意外的模态对话框(文本:您确定要向我们提供您房子的契据吗?):您确定要向我们提供您房子的契据吗?构建信息:版本:'2.46.0',修订版:'一旦切换到警报,就不需要再次切换。将其分配给警报对象,然后接受它–并将其添加到问题中,将其作为答案删除,并检查我的更新答案。所以基本上,在警报出现之前,你不能关闭驱动程序?你还可以帮助其他部分吗?对于chrome,我得到以下异常:线程“main”org.openqa.selenium.NoSuchElementException中的异常:没有这样的元素(会话信息:chrome=43.0.2357.130)我尝试了你所说的,即使在关闭警报后,驱动程序.close()也没有执行!所以基本上,在警报出现之前,你不能关闭司机?你还可以帮助其他部分吗?对于chrome,我得到以下异常:线程“main”org.openqa.selenium.NoSuchElementException中的异常:没有这样的元素(会话信息:chrome=43.0.2357.130)我尝试了你所说的,即使在关闭警报后,驱动程序.close()也没有执行!一旦切换到警报,就不需要再次切换。将其分配给警报对象,然后接受它。对不起,我回答了,因为我的系统中的代码不清楚comment@icantcode检查更新的答案。只需编辑你的帖子,并将其添加到那里,然后将其删除。你能帮我做一些提醒吗。这里有什么警报,然后是什么警报。只是基本的context@icantcode
Alert
是用selenium编写的此类弹出窗口的界面。与
WebDriver
用于浏览器一样,
Alert
用于这些javascript警报,一旦切换到Alert,就不需要再切换。将其分配给Alert对象,然后接受它。我回答了这个问题,因为我的代码不清楚comment@icantcode检查更新的答案。只需编辑你的帖子,并将其添加到那里,然后将其删除。你能帮我做一些提醒吗。这里有什么警报,然后是什么警报。只是基本的context@icantcode
Alert
是用selenium编写的此类弹出窗口的接口。与
WebDriver
用于浏览器一样,
Alert
用于这些javascript警报
System.setProperty( "webdriver.chrome.driver", "C:\\chromedriver.exe");
WebDriver driver= new FirefoxDriver();
//System.setProperty( "webdriver.chrome.driver", "C:\\chromedriver.exe");
//WebDriver driver= new ChromeDriver();
WebDriver driver= new FirefoxDriver();
System.setProperty( "webdriver.chrome.driver", "C:\\chromedriver.exe");
WebDriver driver= new ChromeDriver();
//WebDriver driver= new FirefoxDriver();