Selenium 2 / проблема миграции WebDriver WebDriver не выбирает правильные элементы - PullRequest
0 голосов
/ 26 августа 2011

Я в процессе миграции своего набора тестов с Selenium 1 на WebDriver. Я столкнулся с проблемой, щелкая элементы на странице, которая содержит карту кликабельных штатов США.

Используя Selenium 1, я бы сделал следующее, чтобы выбрать определенное состояние на карте.

selenium.click("css=area[alt=North Carolina]");

В Selenium 2 я конвертирую это в

driver.findElement(By.cssSelector("area[alt=North Carolina]")).click();

WebDriver фактически выбирает другое состояние. Это не проблема синхронизации, состояние выбрано, это просто неправильное состояние. Я попытался отключить cssselector для xpath с тем же результатом.

Не уверен, относится ли это к этой проблеме

ОС: Win XP

Браузеры: протестировано на IE 8 и FF 5 & 6

Селен: 2,5,0

Пример кода страницы

<area alt="California" shape="POLY" coords="10,60,29,68,25,98,56,146,51,167,17,138,3,70"   href="javascript:LoadCategory('CA');">

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Глядя на HTML для предоставленной вами страницы, кажется, что есть отдельные страницы для состояний, таких как CA, AZ, OH и т. Д. Есть некоторые другие состояния (большинство из них), такие как NM, MT и т. Д., У всех есть общие страницы.Что касается вебдрайвера, я не уверен, почему он не нажимает на нужный элемент.Я написал что-то вроде ниже, что работает для меня.Вам придется расширить эту логику для других состояний.

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
driver.get("http://www.servsafe.com/catalog/starterscategories.aspx");
Selenium selenium = new WebDriverBackedSelenium(driver, driver.getCurrentUrl());
selenium.windowMaximize();
((JavascriptExecutor)driver).executeScript("javascript:LoadCategory('CA');");

Аналогично, вы можете сделать это для других состояний, имеющих отдельные страницы, например

((JavascriptExecutor)driver).executeScript("javascript:LoadCategory('AZ');");
((JavascriptExecutor)driver).executeScript("javascript:LoadCategory('FL');");

Для состояний, имеющих общие страницы,

((JavascriptExecutor)driver).executeScript("javascript:LoadCategory();");
0 голосов
/ 26 августа 2011

Я предлагаю использовать метод click () Javascript.

пример

new WebDriverBackedSelenium(driver,"").assignId("css=area[alt='California']", "California");
((JavascriptExecutor) driver).executeScript("document.getElementById('California').click()");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...