[英]Selenium WebDriver clicking on hidden element
您好我想知道如何使用Selenium WebDriver点击隐藏元素和/或禁用元素。
我知道硒1我可以这样做,如下所示:
selenium.click(id="idOfHiddenField");
这会有效,但是对于selenium 2(WebDriver),这不行。 我不想使用jquery来启用或显示隐藏字段或JavaScript。 这是因为大多数测试都使用xpath。
或者我只需要留在旧的硒,这可以让你点击隐藏的字段?
使用JavascriptExecutor
更轻松地解决问题。
例如:
document.getElementsByClassName('post-tag')[0].click();
上面的javascript会点击此页面右上角的“Selenium”标签(问题旁边),即使它是隐藏的(假设)。
您需要做的就是通过JavascriptExecutor
接口发出这条JS指令,如下所示:
(JavascriptExecutor(webdriver)).executeScript("document.getElementsByClassName('post-tag')[0].click();");
这将使用JS沙箱和合成点击事件来执行单击操作。 虽然它违背了WebDriver用户活动模拟的目的,但您可以在特殊情况下使用它,例如在您的情况下效果良好。
有一个答案,但有多个建议:
答:使用selenium支持的驱动程序使用类似的东西点击隐藏的元素
Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);
selenium.clickAt("xpath=//area[@alt='Mercury']", clickPoint);
建议1:如果要创建很多并且您正在寻找FOSS,请专门创建虚假数据。
建议2:检查javascript关闭在firefox实例本身中禁用javascript,例如
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setJavascriptEnabled(false);
它可能不符合您的需求,但对于某些人来说,另一种解决方案可能是改变CSS以隐藏元素。
虽然硒不会找到一个元素display: none;
它会找到一个包含以下内容的元素:
.hide {
position: absolute;
top: -99em;
left: -99em;
}
然后,而不是在您的应用程序中使用jQuery.show/hide/toggle
,您将使用jQuery.toggleClass('hide', true/false/unset_to_toggle)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.