【问题标题】:Cannot click on the button inside span based on the text in sibling Protractor无法根据兄弟量角器中的文本单击跨度内的按钮
【发布时间】:2019-08-16 07:02:38
【问题描述】:

我正在尝试单击基于同级文本的按钮。

<li ng-repeat="list in lists" ng-if="!includes(list)" class="ng-scope">
    <span class="ng-binding">
        <button type="submit" class="btn btn-primary" ng-click="useList(list)">Use</button>
        test
    </span>
    <span class="ng-binding">
        <button type="submit" class="btn btn-primary" ng-click="useList(list)">Use</button>
        test2
    </span>
</li>

如上代码所示,基于test或test2我想相应地点击按钮。我怎样才能做到这一点?

【问题讨论】:

  • 这是您在短时间内遇到的第二个此类问题。您能否将您自己在问题中定位元素所做的努力包括在内?
  • @DublinDev 是的——我两次都提供了一个可行的答案,但 OP 上次“无法让它工作”,似乎在这里忽略了我的答案。

标签: angularjs selenium protractor


【解决方案1】:

我将编写一些代码,接受变量myText 并单击按钮;无论您重复多少跨度元素,只要它们采用问题中显示的格式,这都应该有效。

let buttons = element.all(by.css('button'));
for (var button in buttons) {
    WebElement parent = (WebElement) ((JavascriptExecutor) driver).executeScript(
                               "return arguments[0].parentNode;", button);
    if (parent.getText() == myText) {button.click()};
}

【讨论】:

    【解决方案2】:

    试试下面这个

     select(text:string){
       const ele = element.all(by.css('li > span > button');
       for(i=0;i< ele.count();i++){
       if(ele.get(i).getText() === text){
         ele.get(i).click();
          }
        }
    

    将您希望点击的按钮的值传递给上述函数。

    希望对你有帮助

    【讨论】:

    • OP 不想基于按钮本身的文本来查找和单击按钮,而是基于按钮的父 span 元素的文本。
    猜你喜欢
    • 1970-01-01
    • 2020-02-09
    • 2018-08-09
    • 2019-07-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    相关资源
    最近更新 更多