我正在将我的测试套件从 Selenium 1 迁移到 WebDriver。我在点击包含美国可点击州 map 的页面上的元素时遇到了问题。
使用 Selenium 1,我将执行以下操作从 map 中选择特定状态。
selenium.click("css=area[alt=North Carolina]");
在 Selenium 2 中我将其转换为
driver.findElement(By.cssSelector("area[alt=North Carolina]")).click();
WebDriver 实际上选择了不同的状态。这不是时间问题,选择了一个状态,这只是不正确的状态。我尝试过将 cssselector 切换为 xpath ,结果相同。
不确定这是否与 this issue 有关
操作系统:Win XP
浏览器:在 IE 8 和 FF 5 & 6 上测试
Selenium :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');">
最佳答案
查看您提供的页面的 HTML,似乎有针对 CA、AZ、OH 等州的单独页面。还有一些其他州(其中大多数)如 NM、MT 等都有公共(public)页面。就 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');");
对于具有公共(public)页面的州,
((JavascriptExecutor)driver).executeScript("javascript:LoadCategory();");
关于java - Selenium 2/WebDriver 迁移问题 WebDriver 未选择正确的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197537/