而不是xpath我可以从下面的代码中选择什么

时间:2017-05-23 10:30:55

标签: selenium testing selenium-webdriver

请帮助我在这种情况下找到定位器,因为id是动态的,每当我刷新页面时它都会改变。

型="文本"我也无法使用,因为对于下一个字段,除了代码之外,eveything是相同的,除了标签改变了"名字"到#姓氏"等等。

所以我应该根据下面标签标记中提到的名字选择一些东西。

在这种情况下,请任何人都可以帮助我。

  <input class="md-input-element ng-valid ng-dirty ng-touched" id="md-
  input-4-input" spellcheck="false" type="text">
  <!--template bindings={}-->

  <label class="md-input-placeholder md-float md-empty" for="md-input-
  4-input">First name * <!--template bindings={}--></label>

2 个答案:

答案 0 :(得分:0)

您可以使用preceding-sibling中的following-siblingxpath功能。根据上面提到的代码,您xpath应该是这样的:

//input[@type='text'][following-sibling::label[contains(text(),'First name')]]

但我认为在html中label应首先是input,如果是这种情况,请尝试以下方法:

//input[@type='text'][preceding-sibling::label[contains(text(),'First name')]]

答案 1 :(得分:0)

你可以从类中获取css选择器(如果类名中有空格,则不能通过className执行,因此请使用css,在开头添加“。”并用“。”替换任何空格。)< / p>

@FindBy(css = ".md-input-element.ng-valid.ng-dirty.ng-touched")
private WebElement elementMDInputTouched;

@FindBy(css = ".md-input-placeholder.md-float.md-empty")
private WebElement elementMDInputEmpty;