INTRO:
我是一名使用JavaSelenium进行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的WebDriverManager。
-
该项目是使用Maven构建的,所以我尝试使用这两种方法依赖项,并将selenium文件直接添加到我的项目中结构没有成功。
-
我重新格式化了我的新R10,并尝试再次安装所有内容。我小心地将JAVA_HOME和MAVEN_HOME添加到我的系统路径中。
-
在看到SOF上的一些帖子后,我尝试使用ChromeOptions,但没有其中一些也起作用。
-
领导我们的QA开发人员试图帮助我大约40分钟搞不清楚。他说问题不在我的IDE,但它是Chrome cookie。我必须每天清理饼干这次我想运行一个JUnit Selenium测试。但是我的团队不必这么做,而且这并不总是有效的。
额外细节:
-
我用AMD Ryzen 3900芯片买了一台新的Alienware R10。我添加了JAVA_HOME和MAVEN_HOME到我的Path和环境变量。
-
我可能错误地添加到项目结构或依赖项中。
-
这是我的第一篇文章,所以请让我知道我是否应该格式化如果我遗漏了任何重要的细节。
结论
我很担心我想在周末学习和练习,但我已经花了很多时间来解决这个问题。我的下一个想法是使用Eclipse而不是IntelliJ,看看是否可以在那里运行它。这里的任何建议都会很有帮助。
编辑
Eclipse也不起作用,并且存在同样的问题。这告诉我这个问题肯定与IDE无关。这可能是CPU或浏览器相关的问题。我还尝试通过WebDriverManger依赖关系使用其他驱动程序。
经过进一步的研究,如果我在代码中添加一些Thread.sleep()函数,而不是ExpectedConditions和元素visability,那么似乎可以注册点击并实际添加到Tasks中问题可能源于使用ExpectedConditions API,但这对我的队友有效,对我无效。这可能是AMD芯片组的问题吗
元素可见性在这里使用可能是错误的功能,但它在我的队友机器上确实有效,所以这就是为什么我没有尝试在那里寻找替代方案。我们使用的函数查看DOM树,我们可能希望在浏览器上查看可见性。我很难测试出来,因为我没有笔记本电脑。
我重新格式化了我的旧笔记本电脑,这样它就可以出售了,因为我安装了这台新电脑,但我会用它来尝试另一个功能,看看它是否会带来不同的结果。
第2版:
观察/猜测
我猜问题出在AMD 3900 CPU上。Thread.sleep()将行为更改为至少单击我的"添加项目"按钮。它仍然没有通过我的测试,ExpectedConditions API仍然不能工作。
我将返回Alienware R10,并将获得英特尔CPU R10或构建我自己的PC
这只是一个有根据的猜测,基于我和我同事的机器之间的行为差异,他们有英特尔,我有AMD。
如果您面临类似的问题,请确认您在此线程中使用的是AMD还是Intel。它也会帮助其他人。我确信有解决办法,但它们对我不起作用。我还尝试使用ChromeOptions禁用GPU和其他一些选项。
然而,没有成功,除非有更好的答案,否则我会责怪AMD 3900 CPU。
谢谢,如果你面临类似的问题或找到了更好的答案,请为本帖子投稿。任何猜测都可能有所帮助。
我同意你团队的QA。这与IDE无关。我怀疑操纵WebDriver
的DesiredCapabilities
会解决这个问题。鉴于您使用的是bonigarcia WebDriverManager依赖项,我建议您至少尝试下面的代码,看看WebDriver
是否可以正确创建。
public static void main(String[] args) {
WebDriverManager.chromedriver().setup();
DesiredCapabilities chromeDesiredCapabilities = DesiredCapabilities.chrome();
WebDriver webdriver = new ChromeDriver(chromeDesiredCapabilities)
}