[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: предыдущий node
Invis1ble
Есть примерно такой html
<parent>
<child
class="a"></child>
<child
class="b1"></child>
</parent>
<parent>
<child
class="a"></child>
<child
class="b2"></child>
</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 написал(а):
Цитата (Invis1ble @ 5.03.2012 - 00:31)
но я не имею доступа к изменению разметки.

Или я тебя не понял, или ты меня не понял. Я имел ввиду, что в стилях указать что-то для класса а.

Опять же, если "а" - первый child, то тогда можно использовать такую хрень, где вообще классов нету :) :

div input:first-child
{
color:#339999;
background-color:#996699;

}


<div>
<input
type="text" class="a" />
<input
type="text" class="b1" />
</div>
<div>
<input
type="text" class="a" />
<input
type="text" class="b2" />
</div>


Спустя 7 минут, 47 секунд (4.03.2012 - 23:49) Invis1ble написал(а):
sergeiss
Я тебя понял, просто не совсем точно выразился видимо.
Я не могу править ни html, ни css, т.е. вообще какой-либо код. Представь, что ты подконнектился к http://phpforum.ru и тебе нужно найти такой элемент smile.gif
input:first-child - это понятно, просто не хочу привязываться к родителю, т.к. наименьшая вероятность изменения именно класса для .b*, т.е. бОльшая вероятность, что при изменении разметки тест пройдет успешно.
Все-таки подозреваю, что проще через xpath сделать. Пошел читать сабж smile.gif

Спустя 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 написал(а):
пипец. я о таких зверях и не слышал smile.gif кроссбраузерно?

Спустя 4 минуты, 50 секунд (5.03.2012 - 00:50) Invis1ble написал(а):
Да, css-селекторы нервно курят в сторонке, глядя на возможности xpath smile.gif
Насчет кроссбраузерности - не в курсе, вроде бы да. Но мне это не принципиально, главное, что firefox понимает, на котором проводятся тесты. У IE могут быть проблемы, т.к. слышал, что xpath он эмулирует через css


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.