【问题标题】:Verify that dynamic links are displayed on the page using Selenium and C#使用 Selenium 和 C# 验证页面上是否显示动态链接
【发布时间】:2016-10-03 13:53:38
【问题描述】:

我在数据库中有一个包含名称的表 - [id] [name] 我还有一个网页,其中有一个包含所有名称的通用页面,每个名称都是一个链接。

目前我正在检查数据库中的所有名称是否都显示在页面上。我想检查所有名称是否都是实际链接。我开始尝试从页面中获取所有链接:

[FindsBy(How = How.TagName, Using = "a")]
public IList<IWebElement> allLinks { get; set; }

并将它们放在这样的列表中

    foreach (IWebElement element in allLinks)
       {
           try
           {
               myLinkList.Add(element.GetAttribute("href"));
           } catch (Exception e)
           {
               throw;
           }
       }

不幸的是,我只从 .GetAttribute("href") 得到空值

我做错了什么?

编辑:我可能做的一切都是正确的,但是 AngularJS :/ 刚刚注意到我得到了 null 的 href 因为没有 href 属性。检查时链接如下所示:

&lt;a ng-click="HomePage.registerDetail($event, row.registerId)" class="ng-binding"&gt;myDynamicLink&lt;/a&gt;

链接本身,当点击时,是:

http://myurl.com/#/entityOverview/[id]

那么现在的问题是,我怎样才能让 Selenium 单击该链接或获取该链接的 href?

【问题讨论】:

  • 名称是href的一部分?
  • 不,显示名称,id 是 href 的一部分。
  • 您可以为您的 id 做一个 foreach,其中包含一个方法来检查基于 id 的 css 选择器的元素是否存在,例如 a[href*="id_variable"]
  • 我编辑了这个问题。好像没有href。我猜该链接是由AngularJS即时构建的。不知道 ng-click 是如何工作的。 id 部分在最终链接中,但不在链接元素的 href 属性中。

标签: c# angularjs selenium selenium-webdriver webdriver


【解决方案1】:

在这种情况下,没有 hRef 属性,因为它使用点击事件来触发动作,就像按钮一样(使用“a”而不是“button”只是为了获得链接类型的外观)。您可以检查 ng-click 属性而不是 href

【讨论】:

  • 我可以用 Selenium 以某种方式做到这一点吗?
  • .GetAttribute("ng-click")
猜你喜欢
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多