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

时间:2015-12-12 03:37:47

标签: javascript java selenium selenium-webdriver

我正在尝试使用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:您只能与可见元素进行交互

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

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

2 个答案:

答案 0 :(得分:0)

你能试试吗

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();

   }

答案 1 :(得分:0)

切换到真实浏览器(例如Firefox,Chrome):

ChromeDriver hud = new ChromeDriver();

原因:

  

所有流行的浏览器都没有使用过的javascript引擎   HtmlUnit(Rhino)。如果你使用HtmlUnit测试javascript的结果   可能与那些浏览器有很大不同。

  

通过模拟DOM提供JavaScript支持的无头浏览器   一般使用更高级/模糊的网站存在问题   浏览器功能,或具有可视依赖性的功能   (例如通过CSS职位等)