如何解决Java Selenium 潜在的 Chrome Cookie、驱动程序、预期条件 API 问题?
简介:
我是一名使用 Java Selenium 进行 GUI 测试的学生。我无法让测试用例在我的桌面上运行,但我团队的其他成员可以。
正在使用什么技术/软件
我们使用 JDK 14、IntelliJ Community Edition、BitBucket 作为我们的存储库和 JUnit 4。
我在测试什么
我正在测试一个示例单页应用程序。我添加了一个任务,使用日期选择器添加一个日期,然后单击“添加项目”按钮。但是,单击按钮未注册,任务未添加到列表中。如果我重新启动计算机,第一个 @Test 可以工作,但第二个无法清除 cookie,第二个 @Test 失败。
详细版本:
我从 Surface Book 2 到 Alienware R10 桌面。我的团队能够毫无问题地拉取项目并运行所有测试用例。然而,我无能为力。相同的程序适用于我的 SB2,但不适用于 Alienware R10(AMD 3900 处理器)。
我的尝试:
-
我既使用了本地存储的 Chrome 驱动程序,又使用了 Boni Garcia 的 网络驱动管理器。
-
该项目是使用 Maven 构建的,所以我尝试同时使用两者 依赖项并将 selenium 文件直接添加到我的项目中 没有成功的结构。
-
我重新格式化了我的新 R10 并尝试重新安装所有东西。一世 小心地将 JAVA_HOME 和 MAVEN_HOME 添加到我的系统路径中。
-
我在看到一些关于 SOF 的帖子后尝试使用 ChromeOptions,但没有 其中有一个工作。
-
领导我们的 QA 开发人员试图帮助我大约 40 分钟,然后 想不通。他说问题不在于我的 IDE 而在于它 是使用 Chrome cookie。我必须每次都清除 cookie 时间我想运行 JUnit Selenium 测试。然而,其他成员 我的团队不必这样做,这并不总是有效。
额外细节:
-
我获得了配备 AMD Ryzen 3900 芯片的全新 Alienware R10。我已经添加了 JAVA_HOME 和 MAVEN_HOME 到我的路径和环境变量。
-
这是我的第一篇文章,所以请告诉我是否应该格式化 更好地提出问题,或者我是否遗漏了任何重要的细节。
结论
我很担心我想在周末学习和练习,但我花了很多时间来解决这个问题。我的下一个想法是使用 Eclipse 而不是 IntelliJ,看看我是否可以让它在那里运行。这里的任何建议都会有所帮助。
编辑
Eclipse 也无法正常工作,并且存在同样的问题。这告诉我问题绝对与 IDE 无关。这可能是 cpu 或浏览器相关的问题。我还尝试通过 WebDrivermanger 依赖项使用其他驱动程序。
经过进一步研究,如果我将一些 Thread.sleep() 函数而不是 ExpectedConditions 和元素可见性添加到我的代码中,它似乎会注册点击并实际添加到任务中。 问题可能源于使用 ExpectedConditions API,但这同样适用于我的队友而不是我。这可能是 AMD 芯片组的问题吗?
元素可见性在这里使用可能是错误的功能,但它确实在我的队友机器上工作,所以这就是为什么我没有尝试在那里寻找替代方案。我们正在使用的函数查看 DOM 树,而我们可能希望查看浏览器上的可见性。由于没有可使用的笔记本电脑,因此无法对此进行测试。
我重新格式化了我的旧笔记本电脑,以便在我安装了这台新电脑后可以出售它,但我会用它来尝试其他功能,看看它是否会带来不同的结果。
EDIT2:
观察/猜测
我猜测问题出在 AMD 3900 cpu 上。 Thread.sleep() 将行为更改为至少单击我的“添加项目”按钮。它仍然无法通过我通过的测试,并且 ExpectedConditions API 仍然无法正常工作。
我将退回 Alienware R10 并购买英特尔 cpu R10 或构建我自己的 PC。
这只是一个有根据的猜测,基于我和我的队友的机器之间的行为差异,他们知道我有 AMD。
如果您遇到类似问题,请确认您在此线程中使用的是 AMD 还是 Intel。它也会帮助其他人。我确定有变通方法,但它们对我不起作用。我还尝试使用 ChromeOptions 禁用 GPU 和其他一些选项。
但是没有成功,除非有更好的答案,否则我将其归咎于 AMD 3900 cpu。
谢谢,如果您遇到类似问题或找到更好的答案,请参与此主题。任何推测也可能有所帮助。
解决方法
我同意你们团队的质量检查。
这与 IDE 无关。我怀疑操纵 DesiredCapabilities
的 WebDriver
会解决这个问题。鉴于您使用的是 bonigarcia WebDriverManager dependency,我建议您至少尝试以下代码以查看是否可以正确创建 WebDriver
。
public static void main(String[] args) {
WebDriverManager.chromedriver().setup();
DesiredCapabilities chromeDesiredCapabilities = DesiredCapabilities.chrome();
WebDriver webdriver = new ChromeDriver(chromeDesiredCapabilities)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。