代码之家  ›  专栏  ›  技术社区  ›  user9134826

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

  •  1
  • user9134826  · 技术社区  · 7 年前

    我已经编写了计算网页上链接总数的代码。我在selenium中使用了JavascriptExecutor。但问题是,我在Selenium中得到的total number链接Java脚本命令的计数不同,在浏览器控制台中得到的计数相同。以下是测试详细信息:

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

    硒代码和结果:

    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 回复  |  直到 7 年前
        1
  •  0
  •   undetected Selenium    7 年前

    由于您没有提到在哪个浏览器控制台上执行 JavaScript 命令:

    document.links.length
    

    无论如何 Test Result 你可以通过 ChromeDriver 与我的快速测试结果完全一致 Chrome Development Console i、 e.准确数字 422 . 请参见下面的快照:

    document.links.length

    然而,值得一提的是 IEDriverServer GeckoDriver 两者都是 W3C兼容 Google Chrome PhantomJS 还在 OSS兼容 渲染 HTML DOM Tree 通过不同的协议和标准。尽管 DOM树 翻译 Mechanism 可能微不足道,但 delta 中的差异 End Results 足以 失败 你的 Validation .

    因此,解决方案是始终选择任何单一变体(以下任一种 IE / Firefox / Chrome / 幻影 )共个 WebDriver / Web Browser 要验证的组合 Manual Automated Test Results .