C# 使用Selenium检索动态链接文本
目标:C# 使用Selenium检索动态链接文本,c#,unit-testing,selenium,selenium-webdriver,C#,Unit Testing,Selenium,Selenium Webdriver,目标: 使用by.LinkText 问题: 在这种情况下,链接文本44 gggg不是静态的,因为每次刷新页面时链接文本都会更改 我的想法是检索所有的class=“ng binding”,然后使用第二个链接作为链接文本,,但我不知道怎么做?答案很简单,这是不可能的。如果链接文本是动态的,并且您不知道其值,则无法通过链接文本获取元素 不过,您可以使用其他方法选择它 css选择器 a[class='ng-binding'] 标记名称(不建议使用,因为它可能不是唯一的) 类名 ng-binding
使用
by.LinkText
问题:在这种情况下,链接文本
44 gggg
不是静态的,因为每次刷新页面时链接文本都会更改
我的想法是检索所有的
class=“ng binding”
,然后使用第二个链接作为链接文本,
,但我不知道怎么做?答案很简单,这是不可能的。如果链接文本是动态的,并且您不知道其值,则无法通过链接文本获取元素
不过,您可以使用其他方法选择它
css选择器
a[class='ng-binding']
标记名称(不建议使用,因为它可能不是唯一的)
类名
ng-binding
xpath
在列表中找到元素,然后拉出所需的元素
另一个选项是立即使用xpath选择第二个元素
(//a[@class='ng-binding'])[2]
使用以下选项作为CSS选择器:
a.ng-binding[href$='/test/id_var2']// this will return the second link.
如果您想使用
ng-binding
类,将下面的用作CSS选择器
a.ng-binding//return all elemtns using the ng-binding class
您还可以使用以下xpath:
//a[@href="#/test/id_var2"]
如果你愿意,你可以在这里使用CSS选择器。你总是想要第二个吗?如果链接文本每次都更改,您如何知道哪一个是正确的?它始终是“id_var2”一个还是???第二个的文本可以更改如何将“a.ng-binding[href$='/test/id_var2']”应用于语法代码LinkText?这里不需要将链接文本用作CurrentDriver.FindElement(By.CssSelector(“a.ng-binding[href$='/test/id_var2'])@但这并没有回答他的问题。询问者明确要求提供。LinkText@RemcoW为什么不呢?由于定位元素有很多选项,为什么用户只能使用一种特定的方法来定位元素,使用定位器查找元素的方法不是静态的…@noor他特别要求By.LinkText。我知道有很多不同的选择,你提到了这些很好,但是你没有提到关于By.LinkText的任何内容。所以询问者要求A,你给他们B,如果你不解释为什么你不选择A,这就没有多大意义。
a.ng-binding//return all elemtns using the ng-binding class
//a[@href="#/test/id_var2"]