如何在<button>中访问Selenium中重复的元素

时间:2016-11-08 14:29:20

标签: c# selenium

不同页面上有2个按钮,BEREKENVERTEL ...第1部分代码工作正常,我可以访问并单击按钮,代码的第2部分不起作用。我不知道为什么。

第1部分:

<button type="button" class="btn btn-primary" ng-click="next(formstep1, 2);calculate(formstep1, 2);" ng-disabled=""><span>
    Bereken
</span></button>

Selenium中使用的代码:

searchButton = driver.FindElement(By.CssSelector(".btn.btn-primary"));
        searchButton.Click();

第2部分:

<button type="button" class="btn btn-primary" ng-click="next(formstep2, 3);calculate(formstep2, 3);" ng-disabled=""><span>
    Vertel ons iets over de woning
</span></button>

Selenium中使用的代码:

searchButton = driver.FindElement(By.CssSelector(".btn.btn-primary"));
        searchButton.Click();

1 个答案:

答案 0 :(得分:1)

当原始元素(虽然不可见)仍然是DOM的一部分时,我遇到了这个问题。因此,FindElement将找到DOM中不可见的第一个元素(在本例中为“Bereken”)并返回错误。如果在Vertel按钮出现时搜索DOM,您可能会找到与您匹配的类有多个元素。

例如,ng-click属性是唯一的,您可以匹配其值的子字符串,如下所示:

//Bereken
berekenButton = FindElement(By.CssSelector("button[ng-click*='formstep1']"));

//Vertel
vertelButton = FindElement(By.CssSelector("button[ng-click*='formstep2']"));

^匹配前缀,#匹配后缀,*匹配子字符串。