使用java从另一个类调用变量

时间:2014-07-12 05:38:43

标签: java webdriver

我有一个使用webdriver测试Web应用程序的代码,该应用程序包含100多个元素。 我的测试代码工作正常,但如果有一天如果其中一个元素被修改,我将不得不在我的所有代码中更改所有地方使用此元素。 所以我想把所有元素作为String放在一个类中,然后调用另一个类中的一个元素。

怎么办呢? 例如: 我的gmail收件箱测试代码:

public class ShowInbox {

    public ShowInbox(WebDriver driver) {


        driver.get(driver.getCurrentUrl());
        Utility.wait(3);
        String Inbox = "J-Ke n0";
        String MsgSuivis = "J-Ke n0 aBU";

        try {
        driver.findElement(By.className(Inbox)).isDisplayed();
        System.out.println("Boîte de réception exists");
        driver.findElement(By.className(Inbox)).click();
        } 
catch (NoSuchElementException e) {
System.out.println("Boite de réception is not displayed");
        } finally {
            System.out.println("continue");
        }

        try {

            driver.findElement(By.className(MsgSuivis)).isDisplayed();
            System.out.println("Messages suivis exists");
            driver.findElement(By.className(MsgSuivis)).click();
        } catch (NoSuchElementException e) {
            System.out.println("Messages suivis is not displayed");
        } finally {
            System.out.println("continue");
        }
        driver.quit();
    }
}

此代码在运行时运行良好。 现在我想创建一个仅包含的类 字符串收件箱=" J-Ke n0&#34 ;; 字符串MsgSuivis =" J-Ke n0 aBU&#34 ;; 然后在另一个我想要仅举例说明Inbox,然后是代码来测试收件箱。

请帮忙,谢谢

1 个答案:

答案 0 :(得分:0)

如果我没有弄错的话,你正在寻找一个单独的类来存储你的常量字符串。这是通过创建一个新类并使字段公开来完成的。对此也有一些好的做法:

ElementNames.java

public final class ElementNames {

    public static final String Inbox = "J-Ke n0";
    public static final String MsgSuivis = "J-Ke n0 aBU";
    // ... more names

    private ElementNames() { } // Private default constructor
}

在这里,public允许从类外部访问变量。 static允许访问变量而无需创建类的实例。 final非常重要,因此值是常量,初始化后无法修改。

另一个常见模式是创建一个私有默认构造函数,以便某人不会意外地创建常量类的实例。

使用新常量:

ShowInbox.java

public class ShowInbox {

    public ShowInbox(WebDriver driver) {

        // ...
        driver.findElement(By.className(ElementNames.Inbox)).isDisplayed();
        System.out.println("Boîte de réception exists");
        driver.findElement(By.className(ElementNames.Inbox)).click();

        // ...
   }
}