
selenium rc и метод isVisible
#1
Отправлено 25 октября 2011 - 14:27
а таком случае selenium.isVisible(locator) вовзращает false, что и ожидаемо.
дальше я делаю скролинг окна
selenium.getEval("window.scrollTo(0,550)");
теперь кнопка видна, но selenium.isVisible(locator) возвращает все равно false...
подскажите в чем может быть проблема....
//selenium rc, java
#2
Отправлено 25 октября 2011 - 16:05
#3
Отправлено 25 октября 2011 - 16:30
работает нормально.
#4
Отправлено 25 октября 2011 - 17:16
Пример страницы или хотя бы участок кода с локатором посмотреть можно?
#5
Отправлено 26 октября 2011 - 07:55
<table id="BackButton" class="x-button " cellspacing="0" cellpadding="0" align="center"> <tbody> <tr> <td class="x-button-left" width="6"> </td> <td class="x-button-middle" nowrap="nowrap" width="100%" style="padding: 4px 5px 0pt; background: url("../form/button-middle.gif") repeat-x scroll left top transparent;">< Back</td> <td width="6"> </td> </tr> </tbody> </table>
локатор соответсвенно //td[contains(text(), 'Back')]
а вот с таким локатором заработало....
//table[@id='BackButton']/tbody/tr/td[2]
#6
Отправлено 26 октября 2011 - 07:59
//table[@id='BackButton']//td[contains(text(), 'Back')]просто, судя по всему, где-то на странице присутствует еще один скрытый локатор, который удовлетворяет локатору
//td[contains(text(), 'Back')]
#7
Отправлено 26 октября 2011 - 08:22
Можно еще такой локатор попробовать:
//table[@id='BackButton']//td[contains(text(), 'Back')]просто, судя по всему, где-то на странице присутствует еще один скрытый локатор, который удовлетворяет локатору//td[contains(text(), 'Back')]
да, реально оказалось, что на странице оказалась еще одна такая кнопка, от старого функционала (скрытая), которая и подходила под тот же локатор....
#8
Отправлено 01 ноября 2011 - 15:43
В общем, старая проблема с логином и паролем. Но на другом сайте. И вот поле пароль при выполнении кода на isDisplayed() возвращает false, хотя судя по source страницы должен показываться нормально.
<input type="password" maxlength="255" value="" placeholder="Şifre" id="tbPassword" tabindex="2"/> <input type="email" maxlength="255" value="" placeholder="Kullanıcı Adı" id="tbUsername" tabindex="1"/>
Это 100% единственное такое поле, а также единственное, отвечающее запросу. Запрос пробовала по id (tbPassword), по xpath (//section[@class='account']/fieldset/input[@id='tbUsername']) - не помогает.
Если просматриваю соседнее поле (логин) с помощью плаг-ина в FireFox (Inspect Element), то для поля Пароля вижу такой код:
<input id="tbPassword" type="password" tabindex="2" placeholder="Şifre" value="" maxlength="255" style="display: none;"> <input class="password-replaced placeholder" type="text" tabindex="2">
Т.е. поле tbPassword дейстивтельно не видно. Но я никак не могу понять, в какой момент происходит изменение. По крайней мере, пробовала сначала кликать поле по Имени Класса (password-replaced placeholder) - но Селениум это поле просто не находит ( ошибка на WebElement element = driver.findElement(By.className("password-replaced placeholder"));).
С помощью Selenium IDE вижу, что записывается по id("tbPassword"), но при попытке запуска теста поле не изменяется, никакой ошибки не выдает.
На:
WebElement element = driver.findElement(By.id("tbPassword"));
ошибки нет, но элемент возвращает false на isDisplayed()
Уже не знаю, с какой стороны подойти к этому монстру :)
https://www.casinomaxi2.com/tr/
#9
Отправлено 01 ноября 2011 - 16:24
- сначала отображается элемент в поле пароля
<input class="password-replaced placeholder" type="text" tabindex="2">-после того как вы кликаете по нему оно исчезает и появляетя уже
<input id="tbPassword" type="password" tabindex="2" placeholder="Şifre" value="" maxlength="255" style="display: block;">
по такой логике, перед тем как вставлять пароль нужно кликнуть по первому элементу и передать значение во второй.
#10
Отправлено 01 ноября 2011 - 16:28
по такой логике, перед тем как вставлять пароль нужно кликнуть по первому элементу и передать значение во второй.
Да, я так и делала с другими сайтами, но здесь на команду
WebElement element = driver.findElement(By.className("password-replaced placeholder"));
выдает ошибку null pointer exception. Т.е. такой элемент вообще не находит. :( И я не могу его кликнуть
#11
Отправлено 01 ноября 2011 - 16:57
WebElement prePasswordField = driver.findElement(By.xpath("//*[@class='password-replaced placeholder']")); passwordBehavior.click(); WebElement passwordField = driver.findElement(By.id("tbPassword")); password.sendKeys("test");
у меня падает ошибка в вашем случае другая:
org.openqa.selenium.IllegalLocatorException: Compound class names are not supported. Consider searching for one class name and filtering the results.
похоже webdriver не может искать элемент по имени класса, если в нем есть пробел
#12
Отправлено 02 ноября 2011 - 02:39
wd.get("https://www.casinomaxi2.com/tr/"); wd.findElement(By.xpath("//*[@class='password-replaced placeholder']")).click(); System.out.println("Visible: "+wd.findElement(By.id("tbPassword")).isDisplayed());Результат:
Visible: trueПроверено в FF 6.0.2 и IE9
#13
Отправлено 02 ноября 2011 - 09:11
У меня, наверное, уже глаз замылился, ошибку действительно назвала неправильно. Выходит, что дело в пробеле. У меня теперь тоже работает! Спасибо огромное!

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