java-selenium xpath查找前一节点

时间:2018-01-31 07:45:31

标签: java selenium xpath

我有以下代码

import { Component, OnInit, Input } from '@angular/core';

import { NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap';

@Component({
  selector: 'app-partial-modal-content',
  templateUrl: './partial-modal-content.component.html',
  styleUrls: ['./partial-modal-content.component.css']
})
export class PartialCloneModalComponent implements OnInit {
@Input() cValue;
@Input() dValue;


 constructor() { }

  ngOnInit() {
  }

}

现在,我想点击“仅查看”文字旁边的复选框。我试过了

<ng-template #content let-c="close" let-d="dismiss">
    <app-partial-modal-content [cValue] = "this.c"></app-partial-modal-content>
</ng-template>

但点击文本而不是复选框。 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

要点击&#39;仅查看&#39; 文本附近的复选框,您可以使用以下 xpath

//tr[@type='clickable-row']//td[normalize-space()='View only']//preceding::td[1]/input[@type='checkbox']

答案 1 :(得分:0)

通过将..添加到要升级的部分,可以在xpath中遍历的另一种方法。为此,您需要在之前抓住子元素

我假设您要点击“仅查看”上方一级的复选框。文本,文本+复选框组合是唯一的(没有其他&#39;仅查看&#39;文本在同一页面上方有一个复选框);在这种情况下,你想要的xpath是

//td[contains(text(), 'View only')]/../td/input`.

此xpath转到td,其中包含&#39;仅查看&#39;,上升一级到tr,然后上升到第一个td和输入

如果您想要更简单的文字匹配,可以td[normalize-space()='View only'];如果你想在/../之后更加具体,并告诉你抓住第一个td你可以放td[1],你还可以将[@type='checkbox']添加到输入中以确保你抓住了一个复选框。