Selenium 2 / WebDriver迁移问题WebDriver不选择正确的元素

时间:2011-08-25 21:38:57

标签: java selenium webdriver

我正在将我的测试套件从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 for xpath。

不确定这是否与this issue

相关

操作系统: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 个答案:

答案 0 :(得分:1)

查看您提供的页面的HTML,似乎CA,AZ,OH等州都有单独的页面。还有一些其他状态(大多数)像NM,MT等都有共同的页面。就webdriver而言,我不确定为什么它没有点击正确的元素。我在下面写了一些对我有用的东西。您将不得不为其他州扩展此逻辑。

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();");

答案 1 :(得分:0)

我建议使用Javascript click()方法。

例如,

new WebDriverBackedSelenium(driver,"").assignId("css=area[alt='California']", "California");
((JavascriptExecutor) driver).executeScript("document.getElementById('California').click()");