Поддерживает ли selenium селекторы CSS3?

#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 был бы более подходящим в этом случае.