在 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/HtmlUnitDriverhttps://gist.github.com/evandrix/3694955没有一个流行的浏览器使用 javascript 引擎 HtmlUnit(犀牛)。如果您使用 HtmlUnit 测试 javascript 结果 可能与这些浏览器有很大不同。
通过模拟 DOM 支持 JavaScript 的无头浏览器 某些使用更高级/晦涩的网站通常存在问题 浏览器功能,或具有具有视觉依赖性的功能 (例如通过 CSS 位置等)
【讨论】:
以上是关于在 Java 中使用 Selenium 与 wep 页面交互时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
无线WiFi安全渗透与攻防之WIFI07-WEP-wifite自动化渗透WEP加密
Selenium WebDriver (java) 可以与浏览器的检查工具元素选择器交互吗?