<html>
<body>
<div id="login-box" class="form-box">
<form id="frmlogin" class="form" name="frmlogin" method="post">
<div class="body">
<div class="form-group">
<input id="email" class="form-control" type="text" maxlength="50" value="dfsf@gmail.com" placeholder="Email" name="email">
<span class="red">Please provide a valid email address</span>
</div>
<div class="form-group">
<input class="form-control" type="password" maxlength="15" placeholder="Password" name="password">
<span class="red">Password must not be empty</span>
</div>
</div>
</form>
</div>
</body>
</html>
我需要得到&#34;请提供有效的电子邮件地址&#34;和&#34;密码不能为空&#34;在nth-child
中使用cssSelector
。
我尝试了以下代码段:
//案例2
driver.findElement(By.name("email")).clear();
driver.findElement(By.name("email")).sendKeys("");
String a=driver.findElement(By.cssSelector("form#frmlogin div.form-group:nth-child(1)>span")).getText();
System.out.println(a);
if(a.contains("valid email address"))
{
System.out.println("Login test case2 Passed");
}
else
{
System.out.println("Login test case2 Failed");
}
结果为NoSuchElementFound
。
答案 0 :(得分:3)
您可以按元素选择器
使用它By.cssSelector("input[name=email]")
答案 1 :(得分:1)
请尝试以下代码:
1-要退回“请提供有效的电子邮件地址”:
String a = driver.findElement(By.cssSelector("form#frmlogin div.form-group:nth-child(1)>span")).getText();
System.out.println(a);
2-返回'密码不能为空':
String a = driver.findElement(By.cssSelector("form#frmlogin div.form-group:nth-child(2)>span")).getText();
System.out.println(a);
答案 2 :(得分:0)
如果你不必要,你也可以使用XPath选择器,在我看来你必须选择第n个元素时更容易使用。试试这个:
对于电子邮件:
By.xpath("//div[@class='form-group'][1]/span")
密码:
By.xpath("//div[@class='form-group'][2]/span")
但您是否也可以提供与您合作的完整HTML页面?也许表单在iframe中,因此Selenium在定位元素时遇到问题
答案 3 :(得分:0)
您需要添加.getText()方法,以便在标记内获取文本。
答案 4 :(得分:-1)
您是否曾尝试object.getAttribute("innerHTML")
之类的内容,字面意思是"innerHTML"
,就像这样?
我在从span标记
获取文本时遇到了类似的问题