在 Java 中使用 Selenium 与 wep 页面交互时遇到问题

Posted

技术标签:

【中文标题】在 Java 中使用 Selenium 与 wep 页面交互时遇到问题【英文标题】:Having trouble interacting with wep pages using Selenium in Java 【发布时间】:2016-03-18 02:23:24 【问题描述】:

我正在尝试使用 Java 中 Selenium 的 htmlUnitDriver 和 WebElement 类单击 Google 趋势上的“下载为 CSV”按钮。

我遇到的问题是,在您单击其他设置菜单按钮之前,该按钮被隐藏(不显示),但我无法使用 WebElement 单击该设置菜单按钮。

这是我的代码:

/**
 * @args String, the term to search on Google Trends
 */
public static void main(String[] args)

    //instantiate an HtmlUnitDriver
    HtmlUnitDriver hud = new HtmlUnitDriver();

    //navigate to the 90-day Google Trends page of the input term in args
    hud.get("https://www.google.com/trends/explore#q=" + args[0] + "&date=today%203-m&cmpt=q&tz=Etc%2FGMT%2B8");

    //set element to the first button to press
    WebElement element = hud.findElement(By.id("settings-menu-button"));

    //click the element
    element.click();

我得到的错误是:org.openqa.selenium.ElementNotVisibleException: You may only interact with visible elements

但是设置菜单按钮是可见的?

这是我第一次制作这样的程序并使用这个库,所以感谢您的帮助。我还在学习。

【问题讨论】:

javascriptexecutor 无法在此处点击该元素? 【参考方案1】:

你可以试试这个

public static void main(String[] args)

    //instantiate an HtmlUnitDriver
    HtmlUnitDriver hud = new HtmlUnitDriver();
    wait = new WebDriverWait(hud , 120);
    //navigate to the 90-day Google Trends page of the input term in args
    hud.get("https://www.google.com/trends/explore#q=" + args[0] + "&date=today%203-m&cmpt=q&tz=Etc%2FGMT%2B8");
       wait.until(ExpectedConditions.presenceOfElementLocated(By.id("settings-menu-button")).click();

   

【讨论】:

感谢您的帮助。不幸的是,我仍然收到“您只能与可见元素交互......” 你可以试试wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("settings-menu-button")).click(); 现在只是永远等待,表示该元素永远不可见【参考方案2】:

切换到真正的浏览器(例如 Firefox、Chrome):

ChromeDriver hud = new ChromeDriver();

原因:

https://code.google.com/p/selenium/wiki/HtmlUnitDriver

没有一个流行的浏览器使用 javascript 引擎 HtmlUnit(犀牛)。如果您使用 HtmlUnit 测试 javascript 结果 可能与这些浏览器有很大不同。

https://gist.github.com/evandrix/3694955

通过模拟 DOM 支持 JavaScript 的无头浏览器 某些使用更高级/晦涩的网站通常存在问题 浏览器功能,或具有具有视觉依赖性的功能 (例如通过 CSS 位置等)

【讨论】:

以上是关于在 Java 中使用 Selenium 与 wep 页面交互时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

Java wep 之泰山自然页面

无线WiFi安全渗透与攻防之WIFI07-WEP-wifite自动化渗透WEP加密

关于KRACK攻击

Selenium WebDriver (java) 可以与浏览器的检查工具元素选择器交互吗?

如何在 Selenium WebDriver Java 中使用 JavaScript

如何搭建selenium+java环境搭建