
Как сделать так, чтобы кликнуть на ссылку в лаере?
#1
Отправлено 26 октября 2011 - 07:11
@Test
public void LoginPageTestNg_test18() throws Exception {
wd.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("ul.clearFix li.link-lang div.switch img")).click(); ///кликаем на саму иконку
wd.findElement(By.cssSelector("ul.clearFix li.link-lang ul li a[href='http://mamba.ru/?lang_id=3']")).click(); /// css-селектора выбора английского языка, по нему ужи кликнуть не может
}
При таком тесте на саму иконку кликает, лаер раскрывается, но английский язык уже не кликает. Пожскажите пожалуйста как реализуется в веб драйвере, чтобы он щелкал на элемент на лаере.
#2
Отправлено 26 октября 2011 - 08:09
#3
Отправлено 27 октября 2011 - 08:54
Использование Actions должно помочь
http://code.google.c...serInteractions
Demetri спасибо вам снова за помощь, но что-то все равно не получается, не подскажите, где я туплю?
public void LoginPageTestNg_test19() throws Exception {
wd.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
wd.get("http://www.mamba.ru/");
Actions builder = new Actions(wd);
WebElement menubar_more = wd.findElement(By.cssSelector("ul.clearFix li.link-lang div.switch img"));
WebElement menubar_evenmore = wd.findElement(By.cssSelector("ul.clearFix li.link-lang ul li a[href='http://mamba.ru/?lang_id=3']"));
builder.click(menubar_more).click(menubar_evenmore).perform();
}
Вроде бы ж все верно делаю :-(
#4
Отправлено 27 октября 2011 - 09:50

Вот такой тест работает:
WebDriver driver = new FirefoxDriver(); driver.get("http://www.mamba.ru/"); driver.findElement(By.xpath("//div[@id='BlockUserInfo']//li[@class='link-lang']//img")).click(); driver.findElement(By.xpath("//div[@id='BlockUserInfo']//li[@class='link-lang active']//a[contains(@href,'lang_id=3')]")).click(); driver.quit();Вся проблема была в том, что кнопка, раскрывающая список языков, после клика меняла класс с "link-lang" на "link-lang active"
#5
Отправлено 27 октября 2011 - 10:25
Просто надо быть чуточку внимательнее к локаторам
![]()
Вот такой тест работает:WebDriver driver = new FirefoxDriver(); driver.get("http://www.mamba.ru/"); driver.findElement(By.xpath("//div[@id='BlockUserInfo']//li[@class='link-lang']//img")).click(); driver.findElement(By.xpath("//div[@id='BlockUserInfo']//li[@class='link-lang active']//a[contains(@href,'lang_id=3')]")).click(); driver.quit();Вся проблема была в том, что кнопка, раскрывающая список языков, после клика меняла класс с "link-lang" на "link-lang active"
Demetri спасибо вам большое, действительно попробовал вашим вариантом и все норм, странно, если прописать мой цсс локатор ul.clearFix li.link-lang ul li a[href='http://mamba.ru/?lang_id=3'] то по Firefinder плагину в фаербаге он чего четко определяет на странице. То есть в данном варианте Actions не нужен, но можно интересно и через него реализовать, сейчас поэкпериментирую. Actions как я понимаю нужен в том случае если мы кликаем на элемент, удирживаем мышку, встаем в лаере на другой элемент выбираем его, как то так?
#6
Отправлено 27 октября 2011 - 10:52
Ну, все правильно. До клика по флагу локатор соответствует элементу. А вот после клика - уже нет, класс-то изменился...
странно, если прописать мой цсс локатор ul.clearFix li.link-lang ul li a[href='http://mamba.ru/?lang_id=3'] то по Firefinder плагину в фаербаге он чего четко определяет на странице
...
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных