【发布时间】:2015-01-23 21:51:13
【问题描述】:
我正在为基本注册页面构建一个测试套件(它有大量的文本字段 + 一些单选按钮和复选框)。我正在使用 Selenium Webdriver 解决方案,并且测试是用 Java 编写的。虽然测试在 Firefox 和 Chrome 上运行良好,但 Internet Explorer 在单击单选按钮或复选框时往往会遇到问题。所有单选按钮和复选框都定义了 id-s,据我所知,这是在页面上查找元素的最方便的方法,所以当我开始遇到这些问题时,我感到非常惊讶。查找单选按钮的方法如下所示:
public static WebElement rad_Male(WebDriver driver) {
element = driver.findElement(By.id("male"));
return element;
}
点击是通过以下方式完成的:
rad_Male(driver).click();
正如我所说,Firefox 和 Chrome 可以轻松单击复选框和单选按钮,但是在 IE 中运行测试时出现以下异常(该元素始终可见,我可以用鼠标单击它):
org.openqa.selenium.ElementNotVisibleException: 无法点击元素
我也尝试过使用显式等待来让元素在访问之前加载,但没有运气 - 一旦函数超时,我就会得到 TimeoutException。我怀疑它与页面设计有关,但不幸的是我无法访问页面源代码,因此我无法更改页面结构以使其更易于测试。 单选按钮放置在许多其他 div 中,我认为还有一个表格用于对齐这个和其他元素,但这看起来并不太复杂。这是单选按钮的代码:
<input type="radio" value="M" name="sex" id="male" tabindex="110">
我想我在一个类似的主题中看到了一些 javascript 点击建议,但在诉诸于此之前,我想确保没有其他方法可以使用 Webdriver 提供的方式使其工作。 我刚刚开始学习 Selenium,我试图在旅途中完成我的工作,同时一直在学习新东西,所以我对这方面的经验还不是很丰富。 如果您想了解更多详细信息,请询问,因为我不确定我是否已经全部包含在内。 提前致谢!
【问题讨论】:
-
不确定是否有帮助,但 IE 可以访问下拉菜单并从中选择项目。
-
您是否使用开发者工具在 IE 下检查过此页面的这些元素?在这个页面上按 F12,它会带来一个工具窗口(类似于 Firefox 上的 FireBug),然后检查 Web 结构。可能是这些元素在 IE 下的渲染方式不同,并且没有分配给它们的
id,或者这些id与 Firefox/Chrome 上的不同? -
您好,感谢您的回答!我刚刚注意到上面帖子中单选按钮的 html 代码不可见,所以我做了一些调整,您现在应该在原始帖子中看到它。我在 IE 和 Firefox 上检查了代码,两个浏览器之间的唯一区别是属性的顺序(这是 IE 中的样子):
-
请同时发布此元素的父级(外部 html)的 html 代码 - 甚至可能是祖父级(2 或 3 级以上)。在某些事件(例如 onmouseover 等)上触发的任何父项中是否有任何 javascript 代码?
标签: java html internet-explorer webdriver