您好我想知道如何使用 Selenium WebDriver 单击隐藏元素和/或禁用元素。
我知道使用 selenium 1 我可以这样做:
selenium.click(id="idOfHiddenField");
这会起作用,但是对于 selenium 2 (WebDriver),这不起作用。我不想使用 jquery 来启用或显示隐藏字段或 JavaScript。这是因为大多数测试都使用 xpath。
还是我只需要使用旧的 selenium,它可以让你点击隐藏的字段?
您好我想知道如何使用 Selenium WebDriver 单击隐藏元素和/或禁用元素。
我知道使用 selenium 1 我可以这样做:
selenium.click(id="idOfHiddenField");
这会起作用,但是对于 selenium 2 (WebDriver),这不起作用。我不想使用 jquery 来启用或显示隐藏字段或 JavaScript。这是因为大多数测试都使用 xpath。
还是我只需要使用旧的 selenium,它可以让你点击隐藏的字段?
有一种更简单的方法可以使用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,请专门创建假数据,请选择JMeter。
建议2:检查javascript已关闭禁用Firefox实例本身的javascript,例如
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setJavascriptEnabled(false);
它可能不符合您的需求,但对于某些人来说,另一种解决方案可能是更改 CSS 以隐藏元素。
虽然 Selenium不会找到具有以下内容的元素,display: none;
但它会找到具有以下内容的元素:
.hide {
position: absolute;
top: -99em;
left: -99em;
}
然后jQuery.show/hide/toggle
,您将使用jQuery.toggleClass('hide', true/false/unset_to_toggle)
.