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

Фотография

"Не видно" элементов внутри <body>.

#findElement

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

#1 Neofrin

Neofrin

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

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Neofrin

Отправлено 25 мая 2018 - 07:21

java+selenium web driver (ie). Мне нужно кликнуть на элемент Прикрепленный файл  скрин.png   342,12К   1 Количество загрузок:, но selenium не видит элементы внутри <body>. Прошу подсказать, почему "не видит" и как мне обратиться к нужному элементу. Пробовал обращаться через xpath, className, tagName - тщетно. Для понимания картины:
 
try{
 
            WebElement element = driver.findElement(By.xpath("html"));
            List<WebElement> childs = element.findElements(By.xpath("./*"));
            Iterator it = childs.iterator();
            while(it.hasNext()) {
                WebElement elem = (WebElement) it.next();
                driver.manage().timeouts().implicitlyWait(1, SECONDS);
                System.out.println(elem.getTagName() + " ");
            }
            //System.out.println(element.getTagName());
        }catch (NoSuchElementException e){
            System.out.println("Oooppppss. NoSuchElement");
        }
Консоль:
head
body
 
        try{
            WebElement element = driver.findElement(By.xpath("html/head"));
            List<WebElement> childs = element.findElements(By.xpath("./*"));
            Iterator it = childs.iterator();
            while(it.hasNext()) {
                WebElement elem = (WebElement) it.next();
                driver.manage().timeouts().implicitlyWait(1, SECONDS);
                System.out.println(elem.getTagName() + " ");
            }
        }catch (NoSuchElementException e){
            System.out.println("Oooppppss. NoSuchElement");
        }
Консоль:
title
meta
Exception in thread "main" org.openqa.selenium.StaleElementReferenceException: Element is no longer valid ...
 
        try{
            WebElement element = driver.findElement(By.xpath("html/body"));
            List<WebElement> childs = element.findElements(By.xpath("./*"));
            Iterator it = childs.iterator();
            while(it.hasNext()) {
                WebElement elem = (WebElement) it.next();
                driver.manage().timeouts().implicitlyWait(1, SECONDS);
                System.out.println(elem.getTagName() + " ");
            }
        }catch (NoSuchElementException e){
            System.out.println("Oooppppss. NoSuchElement");
        }
В консоли пусто (в смысле вот это "System.out.println(elem.getTagName() + " ")" ничего не вывело).
 
 
 
 

  • 0

#2 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 04 июня 2018 - 09:14

выведите на консоль getpagesource


  • 0

#3 Neofrin

Neofrin

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

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Neofrin

Отправлено 05 июня 2018 - 10:33

выведите на консоль getpagesource

Да, страница после запуска выполняла обновление, поэтому искомый элемент и не был обнаружен. Помогла вставка данного кода после вызова driver.get("...");:

String currentWindow = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()){
if(!winHandle.equals(currentWindow)){
driver.switchTo().window(winHandle);
}
}

Спасибо.


  • 0


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

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