【问题标题】:Duplicate elements in DOM when running Selenium browser tests运行 Selenium 浏览器测试时 DOM 中的重复元素
【发布时间】:2019-09-19 03:54:27
【问题描述】:

这是一个我以前从未见过的非常奇怪的东西,而且很难用谷歌搜索。

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

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

这是一个 Angular 4 SPA 项目 - 以前从未见过这样的事情。根据浏览器模式,DOM 中的元素会被复制。有没有其他人看过这个?

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

【问题讨论】:

  • 用相关的 HTML 和代码试验更新问题
  • 有可能使用适当的选择器来解决。请分享html。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2012-08-03
    相关资源
    最近更新 更多