
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
|||||||
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 12174 Пользователь №: 23195 На форуме: Карма: 441 Трезвый : 15 лет, 6 месяцев, 25 дней ![]() |
Есть примерно такой html
<parent> и есть однозначный css-селектор для каждого 2-го child-элемента - .b1, .b2 ... Существует ли селектор для получения предыдущего от child.b* дочернего элемента, т.е. child.a ? Что-то вроде .b1 - .a (по аналогии с .a + .b1) Спустя 1 час, 47 минут, 16 секунд (4.03.2012 - 13:45) alex12060 написал(а): посмотри в сторону псевдоклассов. Спустя 9 часов, 33 минуты, 1 секунда (4.03.2012 - 23:18) Invis1ble написал(а): alex12060 смотрел, у тебя есть конкретный пример по данной задаче? Спустя 9 минут, 34 секунды (4.03.2012 - 23:28) sergeiss написал(а): Invis1ble - вроде как, нету именно такого. А что хочешь сделать-то? Почему бы просто в классе а не указать то, что тебе нужно там получить? Спустя 3 минуты, 21 секунда (4.03.2012 - 23:31) Invis1ble написал(а): sergeiss
Хочу для каждого второго child-элемента (child.b*) получить его брата (child.a)
это естественно самый простой выход, но я не имею доступа к изменению разметки. В данном случае я выступаю чисто как юзер. Пишу приемочный тест. Нужно протестировать страницу на наличие определенных узлов и на конкретный текст в этих узлах. Использую WebDriver (Selenium). Спустя 5 минут Invis1ble написал(а): Можно конечно по XPath-селектору получить, но он больше зависит от разметки, имхо. Следовательно более высокая вероятность, что тест провалится при редизайне. Спустя 9 минут, 48 секунд (4.03.2012 - 23:41) sergeiss написал(а):
Или я тебя не понял, или ты меня не понял. Я имел ввиду, что в стилях указать что-то для класса а. Опять же, если "а" - первый child, то тогда можно использовать такую хрень, где вообще классов нету :) : div input:first-child <div> Спустя 7 минут, 47 секунд (4.03.2012 - 23:49) Invis1ble написал(а): sergeiss Я тебя понял, просто не совсем точно выразился видимо. Я не могу править ни html, ни css, т.е. вообще какой-либо код. Представь, что ты подконнектился к http://phpforum.ru и тебе нужно найти такой элемент ![]() input:first-child - это понятно, просто не хочу привязываться к родителю, т.к. наименьшая вероятность изменения именно класса для .b*, т.е. бОльшая вероятность, что при изменении разметки тест пройдет успешно. Все-таки подозреваю, что проще через xpath сделать. Пошел читать сабж ![]() Спустя 10 минут, 42 секунды (4.03.2012 - 23:59) redreem написал(а): думаю только скриптом Спустя 36 минут, 41 секунда (5.03.2012 - 00:36) Invis1ble написал(а): Задача решена с помощью xpath-локаторов. Примеры для поиска: //*[@class='b1']/preceding-sibling::*[@class='a'] //*[@class='b2']/preceding-sibling::*[@class='a'] Спустя 9 минут, 24 секунды (5.03.2012 - 00:45) redreem написал(а): пипец. я о таких зверях и не слышал ![]() Спустя 4 минуты, 50 секунд (5.03.2012 - 00:50) Invis1ble написал(а): Да, css-селекторы нервно курят в сторонке, глядя на возможности xpath ![]() Насчет кроссбраузерности - не в курсе, вроде бы да. Но мне это не принципиально, главное, что firefox понимает, на котором проводятся тесты. У IE могут быть проблемы, т.к. слышал, что xpath он эмулирует через css -------------------- |
||||||
![]() |
![]() ![]() ![]() |