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

如何在Java-Selenium的单独类中存储和检索WebElements

戚奇略
2023-03-14

我正在尝试创建一个新的类,它将包含用于Selenium测试的所有变量。以下是课程:

类:VariablesRepo:

 package src;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class variablesRepo {
    
//  public static final WebElement ChkBox = null;
    static WebDriver driver = new ChromeDriver();
    static WebElement LoginButton = driver.findElement(By.id("btnLogin"));

}
    package src;


import org.testng.annotations.Test;
import org.testng.annotations.BeforeSuite;

import static org.testng.Assert.assertEquals;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.testng.annotations.AfterSuite;

public class NewTest {
    
    WebDriver Driver = variablesRepo.driver;
    
  
  @Test
  public void TestElement() {
      WebElement LoginButton = variablesRepo.LoginButton;
      assert LoginButton.isDisplayed();
      
  }
  
  @BeforeSuite
  public void beforeSuite() {
      Driver.get("https://opensource-demo.orangehrmlive.com/");
      
      
  }

  @AfterSuite
  public void afterSuite() {
      Driver.close();
  }

}

我们如何解决这个问题并从Repo类导入变量?

更新:我得到的errorstack是:

共有1个答案

乐正涵忍
2023-03-14

实际问题发生在variablesRepo类中。请参阅以下错误日志底部

在org.openqa.selenium.remote.remoteWebdriver.findElement(remoteWebdriver.java:315)在src.variablesrepo.(variablesrepo.java:12)

之所以会出现此问题,是因为在NewTest类中的WebDriver driver=VariablesRepo.driver;行为driver创建了两个线程,另一个线程是在使用driver查找VariablesRepo类中的登录按钮时创建的。这就是为什么当您试图直接在NewTest中找到登录按钮时,它会成功,因为您在@BeforeSuite方法中打开url时使用的线程是相同的。

如果您希望只初始化一次驱动程序并将其用于所有其他类,那么使用BaseTest类并实现get_driver类方法来初始化驱动程序。并使用此方法获取所有测试类中的驱动程序。您可以阅读以下内容,了解如何全局初始化web驱动程序?

 类似资料:
  • 我为一个web元素编写了xpath,该元素位于div标记下,但它不起作用。如何为下面的html源代码编写xpath。

  • 我正试图从一个站点获取一个数字(比特币的价值),使用下面的代码 它应该打印一个数字,但它没有打印。我尝试使用其他模块,如.gettext,但结果总是没有。我可以用什么来获得我想要的值?

  • 我正在使用这段代码,但当我从首选项获得位置时,位置返回如下所示... 位置[mprovider=存储,Mtime=0,mlatitude=30.0,montilunde=76.0,mhasaltitude=false,maltitude=0.0,mhasspeed=false,mspeed=0.0,mhasbearing=false,mbearing=0.0,mhasaccuracy=false,

  • 问题内容: 我想存储值并从Java HashMap中检索它们。 这是我到目前为止所拥有的: 我想从HashMap中检索所有键和值作为Java集合或实用程序集(例如)。 我知道只要知道密钥就可以获取值,例如: 有没有办法检索键值作为列表? 问题答案: Java Hashmap键值示例:

  • 我想存储值并从Java HashMap中检索它们。 这是我目前所拥有的: 我想从HashMap中检索所有键和值,作为Java集合或实用程序集(例如,LinkedList)。 我知道如果我知道键,我可以得到值,如下所示: 有没有办法以列表的形式检索键值?

  • 问题内容: 我是Java编程的新手,我正在搜索Java代码以将图像存储在PostgreSQL中并检索图像。 在PostgreSQL中,我使用了Bytea数据类型。图像已存储。但是当我检索时,我得到NULL。我无法获得图像。 对此的任何示例或对此的任何其他建议将是有帮助的。 问题答案: PostgreSQL jdbc文档的第7章介绍了如何存储二进制数据并使用图像(* .gif文件)作为示例。您可能想