不同页面上有2个按钮,BEREKEN
和VERTEL
...第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();
答案 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']"));
^匹配前缀,#匹配后缀,*匹配子字符串。