2016-11-08 62 views
1

在不同的页面上有2个按钮,BEREKENVERTEL ...代码的第1部分工作正常,我可以访问并单击代码的第2部分的按钮不起作用。我不知道为什么。如何访问在<button>内重复的元素<button>

1部分:在Selenium使用

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

代码:

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

第2部分:在Selenium使用

<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> 

代码:

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

第1行上的更正,2个不同页面上的2个按钮 –

+0

Madhu请修改您的帖子不清楚 –

+1

您的意思是'代码不起作用吗?你会得到一个异常或者什么都没有发生? – Andersson

回答

1

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

例如,NG-点击属性是唯一的,你可以匹配它的价值的这样一个子:

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

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

^上前缀匹配,#上后缀相匹配,*子上的匹配。