如何编写xpath来获取当前活动窗口的结果?

时间:2018-02-22 12:12:20

标签: selenium xpath

我有同样的按钮,如Save&关闭我的应用程序中的不同选项卡。如果我像 //按钮[包含(text(),'保存')] 那样编写XPath,它会显示所有按钮的结果,其中“保存”文本出现在不同的选项卡上,无论是活动的还是非活动的。有没有办法获得当前打开的活动标签的“保存”按钮的结果?

这些是针对不同地方的“保存”按钮的HTML。我想编写一个XPath,它应该适用于所有“保存”按钮,以便我可以在方法中使用它。想知道有没有办法获得目前打开的标签的结果?

1)

<button class="btn ng-binding btn-primary" style="margin-right:5px;" ng-class="checkDeleteCrud()" ng-click="modalActionManager()" ng-disabled="disableSaveButton()" ng-hide="crudStatus==='V'" type="button" aria-hidden="false">Save
                </button>

2)

<button class="btn ng-binding btn-primary" ng-class="checkDeleteCrud()" ng-click="modalActionManager()" ng-disabled="( notValidType() || locksavebutton || !createStatisticsForm.$dirty ) &amp;&amp; saveButtonText=='Save' " ng-hide="crudStatus==='V'" type="button" aria-hidden="false">
                                                                Save
                                                             </button>

3)

<button class="btn ng-binding btn-primary" style="margin-right:5px;" ng-class="checkDeleteCrud()" ng-click="modalActionManager()" ng-disabled="disableSaveButton()" ng-hide="crudStatus==='V'" type="button" aria-hidden="false">Save
                                        </button>

2 个答案:

答案 0 :(得分:0)

如果您正在为可见按钮寻找通用的东西,为什么不简单地使用CSS Selector,如:

button[ng-disabled*=' ']

如果我现在解释所有已禁用的元素的ng-disabled值等于disableSaveButton()但活动元素没有此功能但包含带空格的数据,那么我将查看其中的任何空格button ng-disabled数据简单。

希望这会有所帮助。

答案 1 :(得分:0)

首先查找活动选项卡,为此您需要知道Dom中的活动选项卡与非活动选项卡的区别。然后在这个元素中查找带有文本&#34; Save&#34;的按钮。使用点作为XPath表达式中的第一个字符。

我们说webelement&#34; tab&#34;是活动选项卡,然后您可以找到如下按钮(C#代码):

tab.FindElement(ByXPath(".//button[contains(text(),'Save')]")