java - Selenium 2/WebDriver 迁移问题 WebDriver 未选择正确的元素

标签 java selenium webdriver

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

相关文章:

selenium - webdriver 如何与浏览器通信/工作?

java - struts2中如何迭代对象集合?

java - Selenium 在作为套件运行测试时找不到元素

java - 如何解决解析功能文件时出现错误的runtime.cucumberException

selenium - Chrome 驱动程序如何与 Chrome 浏览器交互?

java - 页面对象应该在哪里实例化?

java - URLConnection 和 Socket 哪个快

java - 运行 firefox 时出现 selenium 错误

java - 如果输入有时没有标记,则对数组中的多个字符串进行标记

java - 尝试获取 url 的内容时抛出 Selenium WebDriver Java RunTimeException