java - 网络驱动管理器
问题描述
public class MyDriverManager {
private WebDriver webdriver;
@BeforeClass
public static void beforeClass()
{
WebDriverManager.chromedriver().setup();
WebDriverManager.firefoxdriver().setup();
WebDriverManager.edgedriver().setup();
}
@BeforeMethod
public void beforeMethod()
{
webdriver=new ChromeDriver();
webdriver.manage().window().maximize();
}
@AfterMethod
public void AfterMethod()
{
webdriver.close();
}
@Test
public void test()
{
webdriver.get("http://www.google.com/");
}
}
在运行@Test
时,我收到 java.lang.NullPointerException 作为错误,任何人,请让我知道我在哪里犯了错误。另外,有没有可行的方法在框架中使用它,以便我可以访问我的功能文件?我在 RunnerClass 中尝试过使用它,但似乎不是正确的方法。
解决方案
当您直接运行 @Test 时,我假设您正在使用一些 IDE 并右键单击 @Test 注释并运行它。如果是这种情况,很可能您的@BeforeMethod没有被调用,因此 WebDriver 出现为null
要验证这一点,您可以调试或放置某种打印语句来检查。
如果您没有调试(只是修改了您的代码),请使用下面的代码来验证错误
public class MyDriverManager {
private WebDriver webdriver;
@BeforeClass
public static void beforeClass()
{
WebDriverManager.chromedriver().setup();
WebDriverManager.firefoxdriver().setup();
WebDriverManager.edgedriver().setup();
}
@BeforeMethod
public void beforeMethod()
{
System.out.println( " control is inside beforeMethod now");
webdriver=new ChromeDriver();
webdriver.manage().window().maximize();
}
@AfterMethod
public void AfterMethod()
{
webdriver.close();
}
@Test
public void test()
{
System.out.println( " control is inside test method now");
webdriver.get("http://www.google.com/");
}
}
推荐阅读
- java - 如何强制 Maven 使用外部存储库来检索工件?
- c# - IServiceProvider 解析动态类型
- xml - XPath 通过多个 ID 输出整个 XML
- r - R编程,For循环,if else语句未返回中位数的正确计算
- android - 无法删除 Android 联系人中的特定号码
- firebase - 制作apk后通知声音在android上不起作用
- python - 如何将参数从 Python 传递给 mysql 并根据这些参数从 mysql 获得响应?
- javascript - 用不同的颜色绘制活动类别
- java - Selenium Cucumber:功能文件无法通过运行器类找到步骤定义
- reactjs - Storybook 在侧边栏中添加自定义文本