Перейти к содержимому

Фотография

Selenium WebDriver + JUnit. Не видит элементы, которые обнаруживает Se

#selenium #webdriver # junit

  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 roman_vasin

roman_vasin

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Васин Роман Александрович


Отправлено 30 мая 2017 - 15:56

Всем доброго времени суток! Перешел с Selenium IDE на WebDriver + JUnit и имею следующую проблему: локаторы, которые раньше видел Selenium IDE в упор не видит WebDriver. Например:

 

Команда из IDE

waitForVisible -> xpath=.//*[@id='listContainer']

Элемент обнаруживается.

 

Команда из JUnit:

1.Assert.assertTrue("Element isn't exist", !driver.findElements(By.xpath(".//*[@id='listContainer']")).isEmpty());

 

Ошибка: Element isn't exist

 

or

 

Если попытаться найти по id:

2.Assert.assertTrue(driver.findElement(By.id("listContainer")).isDisplayed());

 

Ошибка: NoSuchElementException: Unable to locate element...

 

Примечание:

Таймер стоит и элементы на странице прогружаются.

 

Полный код ниже:

 

public class Simpletest {
String baseUrl;
WebDriver driver;
@Before
public void testSetup() {
driver = new ChromeDriver();
baseUrl = "http://127.0.0.1:8000";
}

@After
public void testShutDown() {
driver.close();
}

@Test
public void shouldHaveTestAboutProfileSettings() {

driver.get(baseUrl + "/SIMULATOR/index.html");
wait(2);
// Assert.assertTrue("Element isn't exist", !driver.findElements(By.xpath(".//*[@id='listContainer']")).isEmpty());
Assert.assertTrue(driver.findElement(By.id("listContainer")).isDisplayed());

}

public void wait(int seconds) {
try {
Thread.sleep(seconds * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

 

 

HTML:

 4zeOv.png

В идеале, мне нужно проверить наличие clickItem с id=0


  • 0

#2 roman_vasin

roman_vasin

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Васин Роман Александрович


Отправлено 01 июня 2017 - 14:42

Разобрался в чем была проблема. Действительно, искомый элемент был связан с фреймом, а webdriver искал элементы в корне html страницы. Из этого получается, что Selenium IDE видит сразу всю структуру страницы и соответственно все элементы. Видимо поэтому проблемы раньше не возникало. В итоге это решается путем переключения на нужный фрейм через команду: driver.switchTo().frame(driver.findElement(By.id("здесь id фрейма")));


  • 0



Темы с аналогичным тегами #selenium, #webdriver #, junit

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных