Тест должен открывать страницу 1. Верифицировать эл. Кликать по нему. Переходить в новый, открытый таб (страница 2). Верифицировать страницу и элементы там. …
Из того, что я понял. После перехода в новый таб драйвер игнорирует текущий открытый перед монитором таб и продолжает работу с первым табом в браузере.
Unity.class (тестовый)
public
void NSIValidationTest (String nsiName) //nsiName - названия справочников в НСИ
{
Login objLogin = new Login(driver);
objLogin.loginToSMTP(USER_NAME,
PASSWRD);
NSIValidation objNSI = new NSIValidation(driver);
objNSI.nsiAssert();
try {
assertEquals(nsiList.contains(nsiName),
true);
} catch (Exception e) {
logger.error("NSI ERROR", e);
throw (e);
}
}
public static
void tab2(WebDriver driver)
{
new Actions(driver).sendKeys(Keys.CONTROL)
.sendKeys(Keys.NUMPAD2)
.build().perform();
}
NSIValidation.class (инициализация всяких штук)
public
void nsiAssert ()
{
new WebDriverWait(driver, 10)
.until(ExpectedConditions.textToBePresentInElement(strNSI, "НСИ"));
strNSI.click();
System.out.println("Кликнул по НСИ");
Unity.tab2(driver);
System.out.println("Перешел на таб 2");
try {
new WebDriverWait(driver, 10)
.until(ExpectedConditions.visibilityOf(strNSIPageTitle));
System.out.println(strNSIPageTitle.getText());
String nsiPageTitle = strNSIPageTitle.getText();
System.out.println("Получил текст с тайтла НСИ");
assertEquals(nsiPageTitle, NSI_EXPECT_TITLE);
System.out.println("Сравнил тайтл с ожидаемым");
} catch (Exception e) {
logger.error("NSI PAGE VERIFICATION ERROR", e);
// throw (e);
}
}
Лог:
[NSIValidation] [ERROR] NSI PAGE VERIFICATION ERROR
org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of Proxy element for: DefaultElementLocator 'By.xpath: /html[@class='k-webkit k-webkit60']/body/div[@id='vw-body-container']/div[@class='row'][1]/div[@class='pull-left']/h3[@id='headTitle']' (tried for 10 second(s) with 500 MILLISECONDS interval)
Caused by: org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"/html[@class='k-webkit k-webkit60']/body/div[@id='vw-body-container']/div[@class='row'][1]/div[@class='pull-left']/h3[@id='headTitle']"}
Я так понимаю проблема в методе переключения. Есть еще какие-то варианты кроме громоздких методов “якорей”? (Референс: WebDriver features: Робота с несколькими окнами (вкладками) одновременно при помощи Selenium Web Driver)
Или нужно что-то вроде инициализации драйвера для нового таба?