当前位置: 首页 > 知识库问答 >
问题:

访问类变量时的Selenium NoSuchElementException

郗俊能
2023-03-14

所以,我有一个类a,它有一个(公共静态WebElement1,element2)。

public class myClass {
public static WebElement element1, element2;


public myClass(){
    WebDriver driver = new FirefoxDriver();

    this.element1 = driver.findElement(By.id("button"));
    this.element2 = driver.findElement(By.id("text"));
}
}

然后我有一个测试类,它有一个叫做@test public void testclassa的方法。

@Test
public void testClassA(){

    myClass m = new myClass();

    m.element1.click();

    m.element2.sendKeys("input something");

}

问题是我正在获取org.openqa.selenium.NosuChelementException:无法定位元素:{}错误。我认为我的错误正在发生,因为element2位于下一页,它在单击按钮后显示。我应该在代码中做些什么,这样当我将两个元素都分配给findBy方法时,测试将通过第一次单击,然后将sendKeys分配给Element2?

共有1个答案

顾琛
2023-03-14

您编写代码的方式在元素是动态的以及页面导航的情况下会中断。

这不是一个很好的做法,在不同的类中找到webelement并在您的测试类中使用该类的对象。

正如您在代码中所看到的:myClass m=new myClass();,当创建myClass的对象时,构造函数被触发,驱动程序同时找到Element1Element2。而且,由于element2仍未显示,它会抛出一个异常。

    null

更标准的做法(我猜是这样的):

很好的参考:http://www.guru99.com/page-object-model-pom-page-factory-in-Selenium-Ultimate-Guide.html

 类似资料:
  • 问题内容: 问题:如何在子项中显示父变量?预期结果将回显“父母bb” 问题答案: 该变量是继承的并且不是私有的,因此它是当前对象的一部分。 以下是其他信息,可应您的要求提供有关使用的更多信息: 当您要向父类的方法 添加其他 功能时使用。例如,想象一个类: 现在,假设我们要创建一种同时具有导航器的新型飞机。您可以扩展__construct()方法以添加新功能,但仍可以使用父级提供的功能: 这样,您可

  • 问题内容: 得知子类的类变量无法访问父类的类变量而没有特别指出父类的名称,我感到很惊讶: 为什么在定义By时我必须引用Ax,而不仅仅是x?这与我对实例变量的直觉是相反的,并且因为在定义B之后我可以引用Bx。 问题答案: 在Python中,在创建类之前,将在其自己的名称空间中执行类的主体(此后,该名称空间的成员将成为该类的成员)。因此,当解释器达到y = x + 1时,此时B类尚不存在,因此没有父类

  • 问题内容: 我有这个课: 有什么方法可以使用自变量访问静态变量?我宁愿这样做,因为长名称不可读。 问题答案: 使用。这对新旧样式类均适用。

  • 问题内容: 在内部类中,可以访问外部类的变量,但不能访问方法的局部变量。我了解了无法访问方法的局部变量的部分,但我想知道为什么外部类变量可以访问? 我的理解是,由于内部类与外部类绑定,因此只要父级可用,子级就可以访问其父级变量。我对么? 问题答案: 假设您的外部类在内部类的范围内(非静态)被称为,以获取该字段。 例如, 其中Outer是类的名称,并标识该字段。 您也可以直接抓取它,但是如果由于阴影

  • 在内部类中,外部类的变量是可访问的,但方法的局部变量不是。我理解了关于方法的局部变量不可访问的部分,但我想知道为什么外部类变量是可访问的? 我的理解是,由于内部类与外部类绑定,因此只要父类可用,子类就可以访问其父变量。我说得对吗?