我有一个使用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,然后是代码来测试收件箱。
请帮忙,谢谢
答案 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();
// ...
}
}