如果findElement方法无法识别可用属性,如何找到WebElement?

时间:2016-06-02 09:12:48

标签: java selenium webdriver

下面给出了使用Fire Bug检查的元素(文本框)。

input class="text-input--underbar ng-pristine ng-valid ng-touched" 
    type="tel" placeholder="Mobile Number" ng-model="credentials.loginName" name=""

我应该在下面给出的代码中使用此元素的哪个属性:

driver.findElement(By.

*注意: 上面给出的所有属性都没有通过findElement方法识别。 我没有使用任何测试框架(Junit4,TestNG等......)

3 个答案:

答案 0 :(得分:1)

您可以使用CSS选择器:

driver.findElement(By.cssSelector("input[ng-model='credentials.loginName']")).sendKeys("1234");

或者:

driver.findElement(By.cssSelector("input[placeholder='Mobile Number']")).sendKeys("1234");

答案 1 :(得分:0)

元素的父母中是否有任何ID或类可以让它们容易被发现?如果是,请找到这些元素,然后在其中搜索子元素。例如,如果这是你的DOM:

<div class="class1">
  <input class="text-input--underbar ng-pristine ng-valid ng-touched" type="tel" placeholder="Mobile Number" ng-model="credentials.loginName" name="" />
</div>

然后我会使用driver.findElement(By.className("class1")).findElement(By.tagName("input"));

答案 2 :(得分:0)

您应该使用'@'作为属性。使用以下任何一个:

1- driver.findElement(By.xpath("//input[@placeholder='Mobile Number']"));

2- driver.findElement(By.xpath("//input[@ng-model='credentials.loginName']"));

要编写xpath,请参阅http://www.w3schools.com/xsl/xpath_axes.asp