我尝试创建基本的登录自动化测试,但页面上的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();
如果你能帮助,请帮助,并期待听到你们所有人的回复。
答案 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
按钮。