Java 如何关闭浏览器?
,我正在学习编程,我有问题。我只想打开一个浏览器并关闭它,但是。。。 我的程序打开两个浏览器并关闭一个 黄瓜钩: 头等舱: 二等舱: 也许我不该这么做? 我尝试在类部件上共享该项目。问题#1:您将忽略Java风格约定,并使用以大写字母开头的名称声明方法和变量。这会导致以下问题:Java 如何关闭浏览器?,java,selenium,cucumber,hook,qa,Java,Selenium,Cucumber,Hook,Qa,,我正在学习编程,我有问题。我只想打开一个浏览器并关闭它,但是。。。 我的程序打开两个浏览器并关闭一个 黄瓜钩: 头等舱: 二等舱: 也许我不该这么做? 我尝试在类部件上共享该项目。问题#1:您将忽略Java风格约定,并使用以大写字母开头的名称声明方法和变量。这会导致以下问题: 这会导致其他可能帮助你的人干脆走开。Java专家不喜欢阅读其他人的“臭”代码 它会导致各种各样的概念错误。比如说, Close.CloseDriver(); 看起来像是对静态方法的调用。但事实并非如此。为什么这是一
Close.CloseDriver();
看起来像是对静态方法的调用。但事实并非如此。为什么这是一个问题?如果你写的代码让人困惑,你会让人困惑。肯定是其他人,也可能是你自己Chrome
,控制器
和挂钩
。在单元测试中抽象公共代码是很好的,如果您做得正确的话。但是如果你没有一个清晰的思维模型来描述你的抽象需要如何工作,你最好编写简单的重复代码
现在谈谈实际问题。由于上述两个问题,我不确定我是否正确阅读了您的代码,但在我看来问题就在这里:
@After
public void TearDown() {
Controller Close = new Controller();
Close.CloseDriver();
}
好的,您正在关闭一个ChromeDriver
。但是哪一个呢
答:您正在关闭在上一条语句中实例化时创建的驱动程序。这是一个不同的ChromeDriver
实例,与通过Initialize
方法设置的实例不同
解决方案:我的建议是扔掉这些代码,重新开始:
- 决定每个类的用途,每个方法应该做什么,以及如何使用它们。我强烈怀疑你实际上只需要一门课
- 严格遵守标准Java标识符约定
public class Controller {
Chrome Chrome = new Chrome();
public WebDriver driver = Chrome.StartChrome();
public void CloseDriver() {
try {
driver.quit();
} catch (Exception e) {
System.out.println(":: WebDriver stop error");
}
driver = null;
System.out.println(":: WebDriver stopped");
}
Close.CloseDriver();
@After
public void TearDown() {
Controller Close = new Controller();
Close.CloseDriver();
}