Проблема Selenium WebDriver с cssSelector - PullRequest
4 голосов
/ 25 октября 2011

Я пытаюсь нажать на кнопку с помощью селектора CSS в Selenium 2.0 WebDriver. Проблема в том, что скрипт, который я могу запустить с Selenium RC, не работает с WebDriver. Код:

Селен RC:

selenium.click("css=.gwt-Button:contains('Run Query')");

, который работает абсолютно нормально.

Selenium WebDriver:

driver.findElement(By.cssSelector(".gwt-Button:contains('Run Query')")).click(); 

который не работает. Я использую: selenium-server-standalone-2.9.0.jar с Firefox версии 5.0. Может ли кто-нибудь помочь мне выяснить, почему cssSelector не работает с WebDriver?

Ответы [ 2 ]

8 голосов
/ 26 октября 2011

«Содержит» не поддерживается в CSS 3. Webdriver поддерживает все, что изначально поддерживается браузером.Он работает в Селен RC, потому что RC использует библиотеку Sizzle для селекторов CSS и поддерживает «содержит».Вы пробовали что-то вроде:

WebElement element = driver.findElement(By.cssSelector(".gwt-Button[type='button']");
element.click();

Если это не уникально, то, возможно, вам, возможно, придется отфильтровать это ниже.Если ваш сайт использует jQuery, то вы можете использовать селектор «содержит» из jQuery.

JavascriptExecutor js = ((JavascriptExecutor)driver);
WebElement element = (WebElement) js.executeScript("return $(\".gwt-Button:contains('Run Query')\")[0];");
element.click();
0 голосов
/ 25 октября 2011

этот синтаксис выглядит корректно, и когда я отбросил некоторые элементы на тестовой странице, а затем пошел в консоль и выполнил команду $ (". Gwt-Button: Содержит ('Выполнить запрос')"), я получил 1, когдаизменил текст кнопок.Поэтому единственное, о чем я могу подумать, - возможно, у вас есть кнопка «Выполнить запрос», которая существует на странице, но не отображается, и поэтому вы получаете исключение времени выполнения.Возможно, вы захотите проверить его, прежде чем щелкнуть по нему.Или создайте список элементов, а затем удалите все скрытые (display == false) элементы.

...