Я работаю над этим проектом автоматизации уже 2 года и сейчас пытаюсь реализовать параллельное тестирование с помощью ThreadLocal. Я провел много исследований по этому вопросу и реализовал ThreadLocal driver = new ThreadLocal‹›(); в моем BaseTestClass. Моя проблема в том, что я использую объектную модель страницы, где каждая страница представляет собой класс с объектами. Eclipse говорит изменить конструктор на
public LoginLogoutPage(ThreadLocal<WebDriver> driver) {
this.driver = driver;
}
Я делаю это, затем мне предлагается сменить драйвер WebDriver; к драйверу ThreadLocal. После того, как я это сделаю, у всех моих беглых ожиданий под ними появится красная черта, говорящая
"The constructor FluentWait<WebDriver>(ThreadLocal<WebDriver>) is undefined"
Однако я не знаю, как это исправить. Вот фрагмент ниже.
public class BaseTestCriticalScenarios {
protected static ThreadLocal<WebDriver> driver = new ThreadLocal<>();
@BeforeClass
public void setUp() throws InterruptedException, MalformedURLException {
// --------Extent Report--------
report = ExtentManager.getInstance();
// -----------------------------
System.setProperty("webdriver.chrome.driver", "C:\\GRID\\chromedriver.exe");
ChromeOptions option = new ChromeOptions();
// --https://stackoverflow.com/questions/43143014/chrome-is-being-controlled-by-automated-test-software
option.setExperimentalOption("useAutomationExtension", false);
option.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
// --https://stackoverflow.com/questions/56311000/how-can-i-disable-save-password-popup-in-selenium
option.addArguments("--disable-features=VizDisplayCompositor");
option.addArguments("--start-maximized");
option.addArguments("--disable-gpu");
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("credentials_enable_service", false);
prefs.put("profile.password_manager_enabled", false);
option.setExperimentalOption("prefs", prefs);
System.out.println(System.getenv("BUILD_NUMBER"));
String env = System.getProperty("BUILD_NUMBER");
if (env == null) {
DesiredCapabilities capability = DesiredCapabilities.chrome();
capability.setCapability(CapabilityType.BROWSER_NAME, "Chrome");
capability.setCapability(ChromeOptions.CAPABILITY, option);
option.merge(capability);
driver.set(new RemoteWebDriver(new URL(COMPLETE_NODE_URL), capability));
getDriver().get(HOME_PAGE);
getDriver().manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
} else {
driver.set(new ChromeDriver(option));
getDriver().manage().window().maximize();
getDriver().get(HOME_PAGE);
getDriver().manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
}
public WebDriver getDriver() {
//Get driver from ThreadLocalMap
return driver.get();
}
Ниже приведен класс объекта моей страницы
Любая помощь будет оценена по достоинству.