Привет
занимаюсь изучением 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-ом удалить атрибут класс, сначало конечно поменять только
@Viktor_Borisov, @rmerkushin - вы хоть по линку ходили, или “на авось” отвечаете?
А автору советую повнимательнее изучить поведение страницы (через тот же firebug) - так как изначально на странице нету элемента с id search-dropdown-box.
Вообще то Viktor_Borisov предположил что id не верный, смотрите внимательнее. Я отвечал из предположения, что автор топика может нормально скопипастить айди
суть понял, да, если смотреть код страницы в firebug то элемент находит по айди на стр, а если на странице глянуть просто код страницы то не находит элемент…
Сама заинтересовалась данной темой) Может гуру нам подскажут почему
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”}
Вопрос решился кликом по родительскому элементу
вот рабочий код, но там есть закоментированая строка, вот если по ней элемент получать
то ошибка, это точно не в селениуме дело ? (закоментированая строка не получает элемент)
суть уже немного в другой плоскости
типа после клика по элементу 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();
}
}
ArtOfLife
(Sergey Korol)
Выключил(а) отображение темы
#11
ArtOfLife
(Sergey Korol)
Включил(а) отображение темы
#16
Если использовать обёртку над Select, то и по Xpath не находит элемент, так что мне кажеться 99% это изза того что после клика Select опять пропадает, а Xpath быстрее чем по ID получается.
Гуту автомейшен, просьба ответить на вопрос! Что не так!
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”}
Так посмотрите наш код в теме и скажите что не так! Как минимум у двух человек не работает с WebElement element = driver.findElement(By.id(“search-dropdown-box”));
И у вас не работает? Сколько раз проверяли? Дебажить пробовали?
Глазами смотрели, что на странице происходит? Сорсы страницы когда “не работает” смотрели?
Или вы тоже монетку подбросили - выпала решка - и теперь требуете объяснить, почему эта монета всегда падает решкой вверх по четвергам?
Кричащим о том, что не работает, рекомендовал бы быть чуточку повнимательней к деталям. Ибо специфика работы данного компонента выявляется за первых 2 минуты просмотра страницы. Вам товарищ @vmaximv об этом уже который день намекает.