如何将Jsoup与WebDriver集成?

时间:2014-04-08 08:19:48

标签: selenium webdriver html-parsing jsoup

在我的WebDriver项目中,我计划添加Jsoup以获得“父母”和“兄弟姐妹”以及其他一些功能。我需要通过Jsoup找到一个元素,然后使用WebDriver单击它的父元素。这意味着我需要将Joup元素对象转换为WebElement对象。如果可行,请告诉我如何做到这一点。

如果不能以这种方式集成Jsoup和WebDriver,那么请讨论如何让父母和所有人使用WebDriver。
此外,是否可以列出特定WebElement下的所有可能元素?

3 个答案:

答案 0 :(得分:5)

非常有趣的是我们正在采用类似的方法,集成了JSoup和Selenium WebDriver。我可以理解你的问题,特别是基于一些没有稳定ID或属性的Javascript框架来处理一些动态网站。

我们的解决方案如下所示,希望它可以为您提供一些建议:

  • webDriver.getPageSource()获取当前的HTML源代码
  • 使用JSoup解析此HTML源代码,并利用Jsoup选择器(比Selenium强大得多)来定位目标元素
  • 获取此元素的父母或兄弟姐妹
  • 编写一个迭代函数来获取元素xPath,例如// body / div [2] / form [1] / input [3]
  • webDriver.findElement(By.xpath(...))在selenium上下文中定位元素

EDITED

迭代功能的想法是:

  • 首先检查父节点的标签,如果它是正文,则迭代结束
  • 如果没有,则使用getSiblings检查具有相同标记的所有节点中节点的索引,例如,第3个div,然后等于div [3]
  • 迭代到您的父节点,并执行相同的过程

获得子节点和父节点的xpath后,只需将父节点xpath替换为子节点xpath内的空字符串,最后可以得到相对的xpath。

答案 1 :(得分:0)

答案 2 :(得分:0)

如何在特定元素上使用xpath:findElements运行.//*?另外,请查看xpath parent::*following-sibling::*。对于我理解的特殊情况,不需要Jsoup。