在尝试通过扩展抽象类和测试类来创建测试时,我得到了NullPointerException。错误:
java.lang.NullPoInterException(位于pages.userRegistrationPage.java:61)(位于userRegistrationPage.java:61)(位于sun.reflect.nativeMethodAccessorImpl.Invoke0(原生方法)(位于sun.reflect.nativeMethodAccessorImpl.java:62)(位于sun.reflect.nativeMethodAccessorImpl.Invoke(nativeMethodAccessorImpl.java:43)(位于:505)在org.testng.suiterunner.runtest(suiterunner.java:455)在org.testng.suiterunner.runsequency(suiterunner.java:450)在org.testng.suiterunner.runsequency(suiterunner.java:415)在org.testng.suiterunner.privaterun(suiterunner.java:415)在org.testng.suiterunner.run(suiterunner.java:364)在
初始化驱动程序,打开测试页,并在尝试填充字段时抛出异常。我的类:
public abstract class AbstractPage {
private WebDriver driver;
public AbstractPage(WebDriver driver){
this.driver = driver;
}
}
public class UserRegistrationPage extends AbstractPage{
@FindBy(id = "input-firstname")
private WebElement firstName;
@FindBy(id = "input-lastname")
private WebElement lastName;
@FindBy(id = "input-email")
private WebElement email;
@FindBy(id = "input-telephone")
private WebElement telephone;
@FindBy(xpath = "//*[@id=\"input-fax\"]")
private WebElement fax;
@FindBy(id = "input-address-1")
private WebElement address;
@FindBy(id = "input-city")
private WebElement city;
@FindBy(id = "input-postcode")
private WebElement postcode;
@FindBy(id = "input-country")
private WebElement country;
@FindBy(id = "input-zone")
private WebElement zone;
@FindBy(id = "input-password")
private WebElement password;
@FindBy(id = "input-confirm")
private WebElement passwordConfirm;
@FindBy(css = "#content input[type=\"checkbox\"]:nth-child(2)")
private WebElement agreeCheckbox;
@FindBy (xpath = "//*[@id=\"content\"]/form/div/div/input[2]")
private WebElement submitButton;
public UserRegistrationPage(WebDriver driver) {
super(driver);
}
public void fillName(String name){
this.firstName.sendKeys(name);
}
}
public abstract class AbstractTest {
protected WebDriver driver;
@BeforeSuite
public void setUpDriver(){
driver = new FirefoxDriver();
}
}
public class UserRegistrationpageTest extends AbstractTest{
private UserRegistrationPage userRegistrationPage = new UserRegistrationPage(driver);
@BeforeTest
void openURL(){
driver.get("http://88.119.151.54/opencartone/index.php?route=account/register");
}
@AfterTest
void closeBrowser(){
driver.quit();
}
@Test
void fillName(){
userRegistrationPage.fillName("John");
}
}
我错过了什么?
原因是:当您到达“UserRegistrationPage.FillName(”John“)”行时,“UserRegistration”页面的“Driver”成员仍然为空。
看到这个了吗
这是因为在调用UserRegistrationPage的构造函数之后,会调用“AbstractTest”测试内部的@BeforeSuite(方法
2)UserRegistrationPage的构造函数。(此处驱动程序为空)
3)AbstractTest的@BeforeSuite。(在这里,驱动程序不会为空,但在此之前,您已经使用“UserRegistrationPageTest”类中的行初始化了“UserRegistrationPage”的对象
private UserRegistrationPage userRegistrationPage = new UserRegistrationPage(driver);
要解决这个问题,请更改“Open URL”中的“UserRegistrationPage”对象的初始化位置,如下所示
问题内容: 我开始使用Selenium IDE, 并尝试测试一个充满模式对话框()的Web应用程序。 记录测试似乎可以正常工作(除非弹出对话框时日志中没有任何内容),但是它们不能正确播放。该脚本实际上打开了窗口(通过单击按钮触发),但随后无限期地等待。 有什么建议? 问题答案: 从Selenium常见问题解答中,Selenium显然适用于某些类型的对话框,但不适用于其他类型的对话框: 我无法与弹出
我有三个类。一个用于从网页中获取所有元素,一个用于使用这些元素执行操作,一个用于测试脚本。当我从测试脚本调用函数时,我得到一个空指针异常。我发现这是因为我使用了@FindBy注释,但我不知道如何解决这个问题。 元素类别: 操作类: 测试脚本: 当我将WebDriver对象从测试脚本传递到element类时,没有例外。由于没有WebDriver实例化,所以在使用用FindBy注释初始化的元素时会出现
本文向大家介绍Python+Selenium使用Page Object实现页面自动化测试,包括了Python+Selenium使用Page Object实现页面自动化测试的使用技巧和注意事项,需要的朋友参考一下 Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium
问题内容: 我正在尝试编写代码以检查单击SVG对象的功能-例如此URL上的美国状态 这可行,但是有更好的方法吗?有没有物理移动鼠标的东西? 问题答案: 在SVG中,显示的所有内容都是由坐标定义的块。在您的情况下,每个状态也是一个块,因此有一个XPath,您可以在Selenium代码中使用它。 使用浏览器开发工具分析页面代码,并找到与您要单击的状态相对应的块。 这是与加利福尼亚相对应的元素。 找到它
主要内容:示例JSP page 的实质是 java.lang.Object 对象,相当于 Java 中的 this 关键字。page 对象是指当前的 JSP 页面本身,在实际开发中并不常用。 page 对象的常用方法如下: page 对象的常用方法 方 法 说 明 class getClass() 返回当前页面所在类 int hashCode() 返回当前页面的 hash 代码 String toStrin
page对象表示由JSP页面生成的Servlet类的对象实例本身。page对象实际上是Object类型的对象。但可以将page对象转换成相应的Servlet类型的对象。在下面的代码中输出了page对象的类型信息,并通过反射技术输出了由JSP生成的Servlet类中的所有public方法名。 <!-- page.jsp --> <%@ page language="java" pageEncod