t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f9b044b15a8>

Привет
занимаюсь изучением 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-ом удалить атрибут класс, сначало конечно поменять только :slight_smile:


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

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

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

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

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

теплее

Сама заинтересовалась данной темой) Может гуру нам подскажут почему
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”}

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

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

суть уже немного в другой плоскости :slight_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();
    }
}

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

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

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

Гуту автомейшен, просьба ответить на вопрос! Что не так!
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”}

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

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

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

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

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

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

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

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