查找没有id,类或名称的元素(webdriver / Eclipse / Java / automation)

时间:2017-09-12 14:46:50

标签: java eclipse testing xpath automation

我尝试创建基本的登录自动化测试,但页面上的submit按钮没有唯一的class name, and id,那么如何找到它?

按钮的HTML如下:

<button class="btn btn-primary" type="submit" style="float:right;width:120px">Sign in</button>

有一个忘记密码按钮,它共享同一个班级但不同的类型&#39;:

<button class="btn btn-primary" type="button" style="float:left;width:140px;padding-left:10px" onclick="showForgotPassword()">Forgotten Password?</button>

我尝试过以下代码,但它对我没用。

driver.findElement(By.className("btn btn-primary")).click();

如果你能帮助,请帮助,并期待听到你们所有人的回复。

2 个答案:

答案 0 :(得分:0)

运行webdriver测试时,Xpath和Firebug彼此无关。您始终可以使用xpath。

<强>编辑:

您仍然可以通过打开开发人员工具(按F12)在Firefox中测试您的xpath表达式 - &gt;单击Console选项卡并使用命令$ x(“%xPath%”)输入表达式,在您的情况下,命令应如下所示:

$x("//button[text()='Sign in']")

按Enter键,如果一个元素算术,你会看到输出数组[元素],如果找到多个匹配则会看到数组[element1,element2],如果没有与你的表达式相匹配,你会看到数组[]。

关于如何找到按钮,以下是一些解决方案:

1)(假设我提供的id'loginField'实际上是你登录字段的id)你可以在login / password元素上使用submit()方法

// Or just reference the login field as you did before, doesn't have to be id
WebElement loginField = driver.findElement(By.id("loginField"));
loginField.submit();

2)你可以通过xpath调用它:

driver.findElement(By.xpath("//button[text()='Sign in']")).click();

3)关于className - 你需要使用cssSelector:

driver.findElement(By.cssSelector("button.btn.btn-primary[type='submit']")).click();

这是因为className不适用于多个类,当你在元素的class属性中有空格时,它意味着它是“btn”和“btn-primary”类的成员,但不是它的“btn btn-primary”课程的成员。

答案 1 :(得分:0)

请尝试以下代码。

driver.findElement(By.xpath("//button[text()='Sign in']")).click();

xpath说明: - 根据按钮文字Sign in,使用xpath上方点击Sign in按钮。