我正在使用 Selenium 和 Testng 學習 Java 中的自動化測驗。我遇到了我無法真正解決的問題,也許這里有人知道解決方案。
我正在嘗試使用 multisession.xml 從一個類運行多個測驗。僅當我為每個測驗添加單獨的實體時才有效,如下所示:
System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe"); WebDriver driver; driver = new ChromeDriver();
但是,我想使用單獨的類(測驗庫)來擴展我的類和測驗,以免重復代碼。如果我這樣做,那么我的 multisession.xml 一次只能執行一項測驗并回傳以下例外: org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attach to the page document
我猜webdriver的實體有問題。在我的基本初始化代碼中,如下所示:
public class TestBase {
public static WebDriver driver;
public static WebDriverWait wait;
public static Properties config;
public static Properties testdata;
然后使用測驗資料和初始化設定單獨的檔案:
public static void initialization() {
String url = config.getProperty("URL");
String browser = config.getProperty("browser");
String pageLoadTimeout = config.getProperty("pageLoadTimeout");
String windowsMaximize = config.getProperty("windowsMaximize");
String deleteAllCookies = config.getProperty("deleteAllCookies");
String waitTimeout = config.getProperty("waitTimeout");
switch (browser) {
case "chrome":
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")
"/src/main/resources/chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--incognito");
driver = new ChromeDriver(options);
break;
case "firefox":
System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir")
"/src/main/resources/geckodriver.exe");
driver = new FirefoxDriver();
break;
case "msedge":
System.setProperty("webdriver.edge.driver", System.getProperty("user.dir")
"/src/main/resources/msedgedriver.exe");
driver = new EdgeDriver();
break;
case "opera":
System.setProperty("webdriver.opera.driver", System.getProperty("user.dir")
"/src/main/resources/operadriver.exe");
driver = new OperaDriver();
break;
我將不勝感激任何幫助!
uj5u.com熱心網友回復:
StaleElementReferenceException
當您要查找的元素不再附加到 DOM 時拋出。很可能您首先嘗試 .findElement,然后重繪 DOM并嘗試訪問它。如果帶有元素的頁面類實體不是執行緒安全的,這通常發生在并行測驗執行中。
嘗試使用:
object _lock = new object();
lock (_lock)
{
//your driver initialization/login
}
您還應該通過修改來定義將執行測驗的執行緒數thread-count="5" parallel="methods"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/493239.html