您好我想知道如何使用Selenium WebDriver点击隐藏元素和/或禁用元素。
我知道硒1我可以这样做:
selenium.click(id="idOfHiddenField");
这可行,但是对于selenium 2(WebDriver),这不行。我不想使用jquery来启用或显示隐藏字段或JavaScript。这是因为大多数测试都使用xpath。
或者,我是否只需要使用旧的硒,让您点击隐藏的字段?
答案 0 :(得分:16)
使用JavascriptExecutor
可以更轻松地解决问题。
例如:
document.getElementsByClassName('post-tag')[0].click();
上面的javascript会点击此页面右上角的“Selenium”标签(问题旁边),即使它是隐藏的(假设)。
您需要做的就是通过JavascriptExecutor
界面发出这条JS指令,如下所示:
(JavascriptExecutor(webdriver)).executeScript("document.getElementsByClassName('post-tag')[0].click();");
这将使用JS沙箱和合成点击事件来执行点击操作。尽管它违背了WebDriver用户活动模拟的目的,但您可以在特殊场景中使用它,例如在您的情况下效果良好。
答案 1 :(得分:1)
有一个答案,但有多个建议:
答案:使用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);
答案 2 :(得分:0)
它可能不符合您的需求,但对于某些人来说,另一种解决方案可能是改变CSS以隐藏元素。
虽然Selenium 不会找到display: none;
的元素,但将找到包含以下内容的元素:
.hide {
position: absolute;
top: -99em;
left: -99em;
}
然后,不要在您的应用中使用jQuery.show/hide/toggle
,而是使用jQuery.toggleClass('hide', true/false/unset_to_toggle)
。