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

如何使用Selenium WebDriver和Java将一个类值传递到另一个类中?

贲骏喆
2023-03-14

我有一个课程如下:

公开课模块3{

public static void main(String[] args) throws InterruptedException {
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
findElement1 a = new findElement1();
driver.get("webAddress");
driver.findElement(By.xpath("//*[@id='Username']")).sendKeys("A1");
driver.findElement(By.xpath("//*[@id='Password']")).sendKeys("1");
driver.findElement(By.xpath("//*[@id='loginBox']/form/p/button")).click();
Thread.sleep(2000L);
driver.findElement(By.xpath("//*[@id='mainNav']/li[2]/a")).click();
Thread.sleep(2000L);
driver.findElement(By.xpath("//*[@id='addNewEntryButton']")).click();


WebElement dropdown = driver.findElement(By.xpath("//*[@id='timeEntryTable']/tbody/tr[1]/td[1]/select"));
List<WebElement> dropOptions = dropdown.findElements(By.tagName("Option"));
for (int i=0; i<dropOptions.size(); i++)
{
 System.out.println(dropOptions.get(i).getText());
}
Thread.sleep(2000L);
driver.findElement(By.xpath("//*[@id='timeEntryTable']/tbody/tr[1]/td[1]/select")).sendKeys(Keys.ARROW_DOWN);
driver.findElement(By.xpath("//*[@id='timeEntryTable']/tbody/tr[1]/td[5]/input")).sendKeys("5");
driver.findElement(By.xpath("//*[@id='timeEntryTable']/tbody/tr[1]/td[6]/input")).sendKeys("5");
driver.findElement(By.xpath("//*[@id='saveEntryButton']")).click();

Thread.sleep(5000L);

driver.findElement(By.xpath("html/body/div[2]/div[2]/div[2]/div/div[3]/div/header/div/button[4]")).click();

    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
    a.findValue();
    driver.findElement(By.xpath("//button[contains(.,'submit')]")).click();


    }

}

public void findValue() {
     driver.get("webaddress");
     By by = By.xpath("//button[contains(.,'submit')]");
     isElementPresent(by);
     driver.findElement(By.xpath(""));

 }
public boolean isElementPresent(By by){
      try{
        driver.findElements(by);
        System.out.println("execute");
       return true;
      }
      catch(NoSuchElementException e){
       return false;
      }
}

共有1个答案

范文昌
2023-03-14

创建一个公共类,其中可以保留公共的东西,并用于任何类:

package keya;    
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.*;
import org.openqa.selenium.By;

public class Common {
    protected static WebDriver driver;

    public Common(){
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
    }

    public boolean isElementPresent(By by){
        try{
            driver.findElement(by);
            return true;
        }
        catch(NoSuchElementException e){
            return false;
        }
    }
}

由于您正在测试模块3,代码应如下所示:

package keya;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;

public class Module3 extends Common{

    public static void main(String...strings) throws Exception{
        Common c = new Common();
        driver.get("webAddress");
        driver.findElement(By.xpath("//*[@id='Username']")).sendKeys("A1");
        driver.findElement(By.xpath("//*[@id='Password']")).sendKeys("1");
        driver.findElement(By.xpath("//*[@id='loginBox']/form/p/button")).click();
        Thread.sleep(2000L);
        driver.findElement(By.xpath("//*[@id='mainNav']/li[2]/a")).click();
        Thread.sleep(2000L);
        driver.findElement(By.xpath("//*[@id='addNewEntryButton']")).click();
        WebElement dropdown = driver.findElement(By.xpath("//*[@id='timeEntryTable']/tbody/tr[1]/td[1]/select"));
        List<WebElement> dropOptions = dropdown.findElements(By.tagName("Option"));
        for (int i=0; i<dropOptions.size(); i++)
        {
         System.out.println(dropOptions.get(i).getText());
        }
        Thread.sleep(2000L);
        driver.findElement(By.xpath("//*[@id='timeEntryTable']/tbody/tr[1]/td[1]/select")).sendKeys(Keys.ARROW_DOWN);
        driver.findElement(By.xpath("//*[@id='timeEntryTable']/tbody/tr[1]/td[5]/input")).sendKeys("5");
        driver.findElement(By.xpath("//*[@id='timeEntryTable']/tbody/tr[1]/td[6]/input")).sendKeys("5");
        driver.findElement(By.xpath("//*[@id='saveEntryButton']")).click();
        Thread.sleep(5000L);
        driver.findElement(By.xpath("html/body/div[2]/div[2]/div[2]/div/div[3]/div/header/div/button[4]")).click();
        //Here is the verification whether Submit button is present or not
        c.isElementPresent(By.xpath("//button[contains(.,'submit')]"));
        //Rest of the code is here
    }
}

所以您可以对任意数量的类/模块使用Common class的isElementPresent()方法。您可以通过扩展Common class来编写更多的类,这样您就可以使用一些常用的方法,并且WebDriver只在Common class中实例化一次。

 类似资料:
  • 问题是: 在本例中,我通过用芒果扩展MainClass得到了结果:mango two。但是在我的项目中,MainClass已经扩展到了另一个类。这就是为什么我要使用一个接口,我将用MainClass实现Mango类的重写方法 好像我可以从芒果类接收数据

  • 问题内容: 我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做? 问题答案: 很难理解您正在问的问题,但这是一个可能的答案: 使B类成为A的子类: 如果重新声明为,则会出现一种情况,其中存在一个可以称为或的属性。(或在任一或刚刚…甚至作为或地方,并有类型和分别。) 如果您无法在和(或,以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。

  • 我是selenium初学者,只是想把webDriver传递给另一个类,但没有成功。程序应该打开浏览器(“Google”)并在主类中键入一些单词,在第二个类中应该按下“Google”按钮。 以下是我的主要课程: 这是我想从主驱动程序中使用的类。 当我运行它时,它对我说: 传递:main失败:printOnScreen java.lang.NullPointerException 我做错了什么?谢谢高

  • 我是Java中Spring框架的新手。并且有一些问题… 我的应用程序使用Spring、Spring seq的安全性、Hibernate框架。 我正在编写一些简单的应用程序。 我有一个页面,可以通过Hibernate将用户添加到db。 用户类: 角色类: 保存在控制器中: 在UserDAO中保存 我在页面上有一个选择块,我可以在其中选择用户角色作为字符串。 所以在保存用户时,我有 所以据我所知,我应

  • 我尝试将学生名字从main类传递到students类,但在运行时出错。 主类是 学生的班级是 此外,我如何使我的程序检查用户是否输入字符串? 谢谢大家

  • 我在class中定义了一个变量。它可以很好地执行Account类中定义的提款功能。但是,我希望访问Sav\u acct类中存在的函数interest中的变量值。它将收回的值取为0。如何使用兴趣函数中的函数中的函数的值,以便执行正确的数学运算? 导入java。util。扫描仪; 类别帐户{ 双重撤回; } 作废取款(){ 扫描仪sc=新扫描仪(系统英寸); 系统出来println(“您想提取多少?”