Selenium WebDriver 点击隐藏元素

您好,我想知道如何使用 Selenium WebDriver 点击隐藏元素和/或禁用元素.

Hi I would like to know how to click on hidden element and/or disable element by using Selenium WebDriver.

我知道使用 selenium 1 我可以这样做:

I know with selenium 1 I can do this as below:

selenium.click(id="idOfHiddenField");

这会起作用,但是对于 selenium 2 (WebDriver),这不起作用.我不想使用 jquery 来启用或显示隐藏字段或 JavaScript.这是因为大部分测试都使用 xpath.

and this would work, but with selenium 2 (WebDriver), this doesn't. I do not want to use jquery to enable or show hidden fields , or JavaScript. This is because most of the test are using xpath.

还是我只需要使用旧的 selenium,它允许您点击隐藏字段?

Or do I just have to stay with old selenium which allows you to click on hidden fields?

推荐答案

有一种更简单的方法可以使用 JavascriptExecutor 解决该问题.

There is a easier way to work around the problem using JavascriptExecutor.

例如:

document.getElementsByClassName('post-tag')[0].click();

上面的 javascript 会点击此页面右上角的Selenium"标签(在您的问题旁边),即使它被隐藏(假设地).

The above javascript would click on the "Selenium" tag on the top right of this page (next to your question), even if it were hidden (hypothetically).

您需要做的就是通过 JavascriptExecutor 接口发出这条 JS 指令,如下所示:

All you need to do is issue this JS instruction via the JavascriptExecutor interface like so:

(JavascriptExecutor(webdriver)).executeScript("document.getElementsByClassName('post-tag')[0].click();");

这将使用 JS 沙箱和合成点击事件来执行点击操作.虽然它违背了 WebDriver 用户活动模拟的目的,但您可以在小众场景中使用它,例如在您的案例中取得良好效果.

This would use the JS sandbox and synthetic click event to perform the click action. Although it defeats the purpose of WebDriver user activity simulation, you can use it in niche scenarios like in your case to good effect.

相关文章