我已经看到(并且实际回答)了几个特定于硒的问题,其中需要设置一些特定的浏览器偏好来改变它的行为,例如:
换句话说,有很多问题可以分为两类:
这通常通过设置/配置来完成:
FirefoxProfile
for Firefox ChromeOptions
适用于Chrome DesiredCapabilities
用于Internet Explorer 针对特定问题查找特定于浏览器的解决方案的首选和最有效策略是什么?主要浏览器的首选项之间是否存在映射?
例如,我发现要在Firefox中禁用缓存,我可以设置browser.cache.disk.enable
,browser.cache.memory.enable
,browser.cache.offline.enable
和
对network.http.use-cache
的{{1}}偏好设置。 如何我可以知道如何在Chrome和IE中执行相同操作吗?
答案 0 :(得分:6)
突出我的意思是将Wikipedia文章压缩为1句:
Selenium WebDriver ... 是通过 浏览器特定的浏览器驱动程序,...旨在提供基本的构建块,开发人员可以从中创建自己的Domain Specific Language。
而是试着这样思考:如果特定的浏览器实现了一个功能,那么selenium驱动程序很可能会暴露它。如果您可以手动解决问题,您知道是否实现了功能。
我为您提供了非常有效的问题解决算法: CS || RTM || UTSL
图片来自Jeff Atwood博客post。
否,首选项未整合跨驱动程序。司机有specifics and tradeoffs。
不同的浏览器甚至浏览器版本都支持不同的功能集。他们中的一些人甚至缺乏共同点。其中一些功能由selenium涵盖,以便它提供它所具有的基本功能。这样的例子就是较旧的IE不支持xPath,而Selenium必须模拟这种行为。 你不能假设它增加行为来考虑每个浏览器中的每个怪癖来创建一个共同的平台(这将是一个邪恶的问题)。
我建议你阅读Wicked problem : Strategies to tackle wicked problems。
要在chrome中执行相同操作,您可以使用--disable-application-cache
参数运行chrome驱动程序。要查看当前Chrome可以设置的标记,您可以浏览Chrome中的 chrome://flags/
。另一种方法是查找可用source。
IE的替代名称是怪癖的母亲。这是您需要进行研究的地方。一种方法是拨打 RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess nr
nr 是flag field:
This source声称截至2013年5月,IE可能有 desiredCapabilities.ensureCleanSession 来清除缓存,但我还没有对其进行测试。