繁体   English   中英

Selenium WebDriver点击隐藏元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM