我使用 Selenium 和 Capybara 维护了一个测试套件。虽然我可以说服 Selenium 访问我的主域之外的页面,但 Capybara 似乎无法跟踪浏览器地址栏中的 URL。我将此缺陷归结为 Selenium::WebDriver 中的行为,这是 Ruby 与 Selenium 2 的绑定。
谷歌搜索,看起来 Selenium 似乎有一种可以设置的模式,它可以实现跨域操作。但是,我没有找到任何具体的参考。
StackOverflow 上的一些人谈论使用具有“提升权限”的 Chrome 或 Firefox,但同样,我只是没有找到任何有关使用此类功能的信息。不可避免地,这些问题最终没有答案。
还有其他流行的 SO 建议谈论使用“打开”命令将浏览器显式带到新站点。这是不可接受的,原因很明显,用户通常不键入域名。例如,如果我访问 youtube.com,并在描述下方找到我喜欢的带有 Twitter 图标的视频,那么单击该 Twitter 按钮应该会将我引导至适当的 twitter.com 地址。用户不必手动输入推特地址。使用 selenium 的 open 命令会破坏测试,因为测试不再反映用户行为(它模拟某人实际在栏中输入地址),从而破坏了测试的意图,即确认 twitter 按钮是否实际上按预期工作。
我开始相信真正的、自动化的跨域操作是不可能的。
所以,基本上,我有两个问题:
(1)给定一个在“www.example.com”上打开 Selenium 的测试脚本,并且我要求 Selenium 单击将浏览器指向其他位置的链接,是否 = 可能 = 以某种方式捕获浏览器地址的 URL点击成功后栏会读取吗?(2) 知道这是可能的,=how= 我该怎么做?我根本没有找到任何有关此的信息。如果我阅读@session.driver.browser.current_url,它仍然会报告example.com 上的URL,而不是浏览器的当前URL。
我不太确定如何提供示例源代码来帮助说明我想要的东西,以免将问题与无关的细节混淆,但如果人们想要示例源代码,请告诉我,我会尝试掀起某事。
谢谢您的帮助。