通过Selenium和浏览器开发工具获取网页上“链接总数”的数量差异

时间:2017-12-23 20:27:29

标签: selenium dom selenium-webdriver selenium-chromedriver geckodriver

我已编写代码来计算网页上的链接总数。我在selenium中使用了JavascriptExecutor。但问题是我在Selenium中获得的总数链接Java Script命令和浏览器控制台中的相同数量。以下是测试详情:

正在测试的网站:https://www.ebay.com/ 测试:Ebay主页上的链接总数。

Selenium代码和结果:

WebDriver driver = new ChromeDriver();
    driver.get("https://www.ebay.com/");

    driver.manage().timeouts().implicitlyWait(20l, TimeUnit.SECONDS);

    JavascriptExecutor js = (JavascriptExecutor)driver;
    System.out.println(js.executeScript(" return document.links.length"));

结果:422

但是当我在浏览器控制台中执行相同操作时,我得到440。 enter image description here

我无法理解这里的区别。请有人帮我理解

1 个答案:

答案 0 :(得分:0)

回答你的问题非常困难,因为你没有提到你执行JavaScript命令的浏览器控制台:

document.links.length

您通过 Test Result 观察到的ChromeDriver与我通过 Chrome Development Console 422 的确切数字。请参阅下面的快照:

document.links.length

但是,值得一提的是 IEDriverServer GeckoDriver 符合W3C Google Chrome PhantomJS 仍然符合OSS 会将 HTML DOM Tree 呈现为不同协议和标准。虽然 DOM树呈现Mechanism的差异可能无关紧要,但delta的{​​{1}}差异足以失败您的{{} 1}}。

因此,解决方案是始终选择任何单个变体( End Results / Validation / {{1} IE / Firefox 组合 / Chrome )以验证< strong> PhantomJS WebDriver Web Browser