selenium и js не видят элемент на странице

webdriver
Теги: #<Tag:0x00007fedbfc8cda0>

(Игорь) #1

Привет
занимаюсь изучением Seleniuma, суть проблемы : сайт Aliexpress поле поиска элемент select
вот код:

public class Test {

    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://aliexpress.com");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        WebElement element = driver.findElement(By.id("search-dropdown-box"));
        System.out.println(element.getText());

    }

}

собственно проблема не видим элемент, пробывал и другое ожидание
так же пробывал js-ом удалить атрибут класс, сначало конечно поменять только smile

.executeScript("document.getElementById('search-dropdown-box').removeAttribute('class')");



document.getElementById('search-dropdown-box')
- возвращает null
selenium 2.47.1
что то мне кажеться я упустил ....... тыкнете плз носом smile


(rmerkushin) #3

Какой Firefox? Если самый свежий, сделайте даунгрейд до 38 версии примерно.


(vmaximv) #4

@Viktor_Borisov, @rmerkushin - вы хоть по линку ходили, или "на авось" отвечаете?
А автору советую повнимательнее изучить поведение страницы (через тот же firebug) - так как изначально на странице нету элемента с id search-dropdown-box.


(rmerkushin) #5

Вообще то Viktor_Borisov предположил что id не верный, смотрите внимательнее. Я отвечал из предположения, что автор топика может нормально скопипастить айди smile


(Игорь) #6

суть понял, да, если смотреть код страницы в firebug то элемент находит по айди на стр, а если на странице глянуть просто код страницы то не находит элемент... smile


(vmaximv) #7

теплее


(Happy Smile) #8

Сама заинтересовалась данной темой) Может гуру нам подскажут почему
WebElement element = driver.findElement(By.xpath(".//*[@id='search-dropdown-box']")); находит элемент,
а при
WebElement element = driver.findElement(By.id("search-dropdown-box"));
валится ошибка
Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"search-dropdown-box"}


(vmaximv) #9

Думайте проще. Селениум тут не причем.


(Игорь) #10

Вопрос решился кликом по родительскому элементу
вот рабочий код, но там есть закоментированая строка, вот если по ней элемент получать
то ошибка, это точно не в селениуме дело ? (закоментированая строка не получает элемент)

суть уже немного в другой плоскости smile
типа после клика по элементу xpath быстрее чем id работает что бы получить элемент?

public class Test {
    public static void main(String[] args) throws InterruptedException {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://aliexpress.com");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        WebElement element = driver.findElement(By.className("searchbar-operate-box"));
        element.click();
        // Select select = new
        // Select(driver.findElement(By.id("search-dropdown-box")));
        // ====> Unable to locate element:
        // {"method":"id","selector":"search-dropdown-box"}
        Select select = new Select(driver.findElement(By.xpath(".//*[@id='search-dropdown-box']")));
        select.selectByVisibleText("Телефоны и телекоммуникации");
        driver.quit();
    }
}

(Sergey Korol) #11

(Sergey Korol) #16

(Игорь) #17

Если использовать обёртку над Select, то и по Xpath не находит элемент, так что мне кажеться 99% это изза того что после клика Select опять пропадает, а Xpath быстрее чем по ID получается.


(rmerkushin) #18

Странно, поиск по ID должен быть быстрее. Проверьте все же версию FF у меня похожая проблема была.


(vmaximv) #19

Так может дело таки не в том, каким образом происходит поиск элемента?


(Happy Smile) #20

Гуту автомейшен, просьба ответить на вопрос! Что не так!
WebElement element = driver.findElement(By.xpath(".//*[@id='search-dropdown-box']")); находит элемент,
а при
WebElement element = driver.findElement(By.id("search-dropdown-box"));
валится ошибка
Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"search-dropdown-box"}


(vmaximv) #21

У гуру все находит - проблема на вашей стороне и, скорее всего, в вашем коде wink


(Happy Smile) #22

Так посмотрите наш код в теме и скажите что не так! Как минимум у двух человек не работает с WebElement element = driver.findElement(By.id("search-dropdown-box"));


(vmaximv) #23

И у вас не работает? Сколько раз проверяли? Дебажить пробовали?
Глазами смотрели, что на странице происходит? Сорсы страницы когда "не работает" смотрели?

Или вы тоже монетку подбросили - выпала решка - и теперь требуете объяснить, почему эта монета всегда падает решкой вверх по четвергам?


(Sergey Korol) #24

3 дня обсуждений какой-то дикой магии. Заглянул на страницу - нет элемента.

Навел мышкой на дропдаун - появился.

Кричащим о том, что не работает, рекомендовал бы быть чуточку повнимательней к деталям. Ибо специфика работы данного компонента выявляется за первых 2 минуты просмотра страницы. Вам товарищ @vmaximv об этом уже который день намекает.


(Happy Smile) #25

Спасибо огромное!!!