【发布时间】:2018-10-01 06:31:53
【问题描述】:
我正在尝试使用 Selenium 为我的扩展程序编写 E2E 测试。对于我的测试,我需要打开扩展程序的弹出页面 - 就好像用户点击了扩展程序的徽标(在浏览器的右下角)。
我已经设法使用扩展程序初始化 ChromeDriver,方法是:
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("...\\dist.crx"));
通过这种方式打开浏览器(网络驱动程序)并根据需要安装它。但问题是,我不知何故需要打开弹出页面。
所以我想到了一个不错的解决方案,但不幸的是没有奏效: 我设置了一个键盘快捷键来打开扩展程序(使用谷歌的Command API)。问题是 - 它只能手动工作。
手动选择的快捷方式(Ctrl + Shift + Y)打开根据需要扩展。但是当使用 Selenium 将这些密钥发送到浏览器时,什么都没有发生*:
Actions actions = new Actions(webDriver);
actions.sendKeys(Keys.chord(Keys.CONTROL, Keys.SHIFT, "Y")).perform();
所以这不起作用,我使用 Java 的机器人点击扩展的图标,给它 x,y 偏移坐标。这个解决方案是有效的,但它非常丑陋而且不好,因为它不会在不同的屏幕上正确点击。我正在尝试找到一个可以在所有屏幕尺寸上运行的全局解决方案。
提前致谢。
*当我以这种方式发送密钥时,其他操作对我来说效果很好(例如 Control + A 标记所有) - 所以我猜问题不在于我发送密钥的方式。
澄清:我想测试我的弹出页面(和后台脚本)与 DOM 本身(内容脚本)之间的交互。这意味着我需要打开 both 弹出页面,对其执行一些操作,然后对网页的“真实”DOM 进行断言。因此,仅全屏打开弹出页面并不能让我编写我想要的所有 E2E 测试。
【问题讨论】:
标签: java selenium selenium-webdriver google-chrome-extension selenium-chromedriver