我编写了代码来计算网页上的链接总数。我在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
我无法理解这里的差异。请有人帮我理解
回答你的问题是非常困难的,因为你没有提到你在哪个浏览器控制台上执行了JavaScript
命令:
document.links.length
你通过Test Result
观察到的ChromeDriver
与我通过Chrome Development Console
观察到的快速测试结果完全相同,即422的确切数字。请参见下面的快照:
然而,值得一提的是IEDriverServer
和GeckoDriver
都是符合W3C标准的,Google Chrome
和PhantomJS
仍然是OSS Compliant通过不同的协议和标准呈现HTML DOM Tree
。虽然DOM树渲染Mechanism
的差异可能是微不足道的,但delta
的End Results
差异足以使你的Validation
失败。
因此,解决方案是始终选择IE
/ Firefox
组合的任何单个变体(Chrome
/ PhantomJS
/ WebDriver
/ Web Browser
)来验证Manual
和Automated
Test Results
。