我有幾個測試顯式等待硒測試。如何使靜態工廠方法不是靜態實例?
我用得太多了。我想將它移動到基類和削減每次創建新的對象:
新WebDriverWait(...)
現在看起來未來:
public void logOutUser() {
new WebDriverWait(driver, 30).until(presenceOfElementLocated(By.xpath("//span[@class='gb_W gbii']")));
userOptionsMenu.click();
new WebDriverWait(driver, 30).until(presenceOfElementLocated(By.xpath("//div/a[@id='gb_71']")));
signOutLink.click();
}
我想將它移動到基類,並繞過多餘的對象創建。
基類:
public class AndroidBasePage implements IPage {
protected WebDriver driver = null;
private WebDriverWait driverWait;
public AndroidBasePage() {
driver = SeleniumManager.activeBrowser();
}
@Override
public WebDriver getDriver() {
return driver;
}
public WebDriverWait getWait() {
if (driverWait == null) {
driverWait = new WebDriverWait(driver, 30);
}
return driverWait;
}
protected void driverWaitPresenceOfElement(String xpath) {
getWait().until(presenceOfElementLocated(By.xpath(xpath)));
}
}
它作品現在:
public void logOutUser() {
driverWaitPresenceOfElement("//span[@class='gb_W gbii']");
userOptionsMenu.click();
driverWaitPresenceOfElement("//div/a[@id='gb_71']");
signOutLink.click();
}
但我不知道它的效率。有什麼建議麼。
是否存在某種方式使getWait()
靜態?
不,因爲它對於類的每個實例都不相同,所以您會爲每個AndroidBasePage實例返回不同的WebDriverWait。 – user3722371
所有這些確實可以避免始終創建一個新的'WebDriverWait'實例,並不確定您從中獲得了什麼。 – Arran
@Arran你知道其他替代方案嗎? –