我正在将我的测试套件从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');">
答案 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()");