如何将Jsoup与WebDriver集成?

Abh*_*jee 5 selenium webdriver html-parsing jsoup

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

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

Sma*_*rks 7

我们正在采用类似的方法,集成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.