#selenium #css-selectors
#selenium #css-селекторы
Вопрос:
Не то чтобы я был мастером селектора CSS, но узнал, что ниже приведен селектор CSS 3 —
css=li:nth-child(1) div[class=team-name]
Ниже приведен селектор CSS 2 —
css=li:first-child div[class=team-name]
Когда я использую селектор CSS 2 для —
Selenium.getText("cssSelector")
Я получаю правильный текст, но использование селектора CSS 3 выдает исключение с указанием —
Element css=li:nth-child(1) div[class=team-name] a not found
Если бы дело было только в этом, я бы, вероятно, использовал селектор CSS 2. Но мне нужно перебрать пару ссылок и прочитать текст, т. е —
for(int i=1; i<loopCount; i ) {
ArrayList.add(selenium.getText("css=li:nth-child(" i ") div[class=team-name] a"));
}
Теперь, как это было бы возможно, если бы я использовал селектор CSS 2.
Комментарии:
1. Вам действительно не нужно продвигать предложение в каждом другом вопросе Selenium, который вы задаете.
Ответ №1:
При использовании n-го дочернего элемента для селектора CSS3 в selenium каким-то образом selenium обрезает строку после него, поэтому она ссылается только на Element css=li:nth-child(1)
. В качестве обходного пути используйте,
Element css=li:nth-child(1) > div[class=team-name]
‘>’ имеет значение.
Надеюсь, это поможет.
Комментарии:
1. использование «>» отметило бы его прямым дочерним элементом, чего нет в моем сценарии
2. Я полагаю, это указывает на — saucelabs.com/blog/index.php/2011/01 /… что selenium 1.0 не имеет такой возможности
3. Даже я много боролся с этим, прямо сейчас я использую разные циклы для каждого типа элемента, который я хочу найти после nth-child(), поскольку > предоставляет только прямого потомка. Я думаю, Xpath был бы более подходящим в этом случае.