运行Selenium浏览器测试时DOM中的元素重复

时间:2019-04-30 13:14:23

标签: c# selenium google-chrome selenium-webdriver

这是一个我以前从未见过的怪胎,谷歌很难。

我们有一个具有内部标签页的单页应用程序(不是Chrome标签页,应用程序中的纯HTML模拟标签页)。我们有端到端的Selenium C#测试,使用单个选项卡时运行良好。我们创建了一些测试,该测试在打开两个html标签的情况下运行,但失败了。他们失败了,因为其中有一个带有“打开”按钮的模态是重复的,并且当测试去单击它时,它单击了原始的而不是重复的模版,并引发了错误。模态及其组件应该只有一个实例,实际上,当您以普通用户身份运行它时,事实确实如此。这是场景:

  1. 作为正常的浏览器会话在本地运行,将打开两个应用程序选项卡,打开模式对话框,其中一个是DOM中“打开”按钮的实例。
  2. 在本地运行,调试运行Selenium C#Visual Studio,两个应用程序选项卡,打开模式对话框,DOM中同一打开按钮的两个实例,测试失败,因为代码正在寻找“第一个”,错误是“另一个”元素将获得点击”。

这是Angular 4 SPA项目-以前从未见过这样的事情。 DOM中有些元素是重复的,具体取决于浏览器模式。其他人看到了吗?

不确定我们的应用是否存在问题-在哪种情况下,当我们以普通用户身份运行时为什么不这样做?或者,如果这是我们如何从测试套件中启动Chrome的问题-刚安装ChromeDriver实例时,我们没有指定任何Chrome选项。

1 个答案:

答案 0 :(得分:0)

“另一个元素将获得点击”并不意味着指定选择器还有另一个元素。通常,这意味着存在另一个位于其顶部的元素(隐藏它)。我建议您在单击之前和之后创建屏幕截图,并手动检查该元素在那时是否确实可见。 还要检查您选择的元素是否不是偶然的0,0大小,并且当用户单击时,孩子或类似的东西会收到点击