Проблема Selenium WebDriver с By.cssSelector - PullRequest
2 голосов
/ 10 ноября 2011

У меня есть элемент, html которого выглядит так:

<div class="gwt-Label textNoStyle textNoWrap titlePanelGrayDiagonal-Text">Announcements</div> 

Я хочу проверить наличие этого элемента. Поэтому я делаю что-то вроде:

WebDriver driver = new FirefoxDriver(profile);
driver.findElement(By.cssSelector(".titlePanelGrayDiagonal-Text"));

Но он не может оценить CSSSelector.

Даже я пытался, как:

By.cssSelector("gwt-Label.textNoStyle.textNoWrap.titlePanelGrayDiagonal-Text")

пробовал и с этим:

By.cssSelector("div.textNoWrap.titlePanelGrayDiagonal-Text")

Примечание: класс titlePanelGrayDiagonal-Text используется только этим элементом на всей странице. Так что это уникально. Содержит псевдо-селектор, я не могу использовать. Я хочу идентифицировать себя только с классом CSS.

Версии: Selenium 2.9 WebDriver Firefox 5.0

Ответы [ 5 ]

4 голосов
/ 26 февраля 2013

При использовании Webdriver вы хотите использовать стандартные css-селекторы W3C, а не sizzle-селекторы, как вы привыкли использовать в jquery. В вашем примере вы хотели бы использовать:

driver.findElement(By.cssSelector("div[class='titlePanelGrayDiagonal-Text']"));
2 голосов
/ 10 ноября 2011

После прочтения вашего поста, что вы должны сделать, поскольку этот класс уникален, просто сделайте FindElement(By.ClassName("titlePanelGrayDiagonal-Text"));

Также CssSelector не обрабатывает ключевое слово contains, о котором w3 говорил, но никогда не добавлял.

2 голосов
/ 10 ноября 2011

Я не использовал селекторы css, но я бы использовал этот селектор xpath:

"xpath=//div[@class='gwt-Label textNoStyle textNoWrap titlePanelGrayDiagonal-Text']"

Селектор CSS должен быть, вероятно, что-то вроде

"css=div[class='gwt-Label textNoStyle textNoWrap titlePanelGrayDiagonal-Text']"

Источник: http://release.seleniumhq.org/selenium-remote-control/0.9.2/doc/dotnet/Selenium.html

0 голосов
/ 26 августа 2013

Я считаю, что использование подстановочного знака в CSS было бы более полезным.Что-то вроде следующего: driver.findElement(By.cssSelector("div[class$='titlePanelGrayDiagonal-Text']");

Это будет смотреть на атрибут класса и посмотреть, чем этот атрибут заканчивается.Поскольку ваш атрибут класса заканчивается строкой «titlePanelGrayDiagonal-Text», добавленный «$» в операторе css найдет элемент, а затем вы сможете выполнить любое действие, которое пытаетесь выполнить.

0 голосов
/ 30 марта 2012

Вы когда-нибудь пробовали следующий код,

By.cssSelector ("div # gwt-Label.textNoStyle.textNoWrap.titlePanelGrayDiagonal-Text");

...