![](/img/trans.png)
[英]Selenium: UnexpectedTagNameException for cssSelector in Java
[英]Get element by cssSelector in Selenium (Java)
<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>
我需要在cssSelector
使用nth-child
获取“请提供有效的电子邮件地址”和“密码不能为空”。
我尝试了下面的代码:
//案例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
。
您可以通过元素选择器使用它
By.cssSelector("input[name=email]")
请尝试以下代码:
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);
如果你没有,你也可以使用XPath选择器,我认为当你必须选择某个东西的第n个元素时更容易使用。 试试这个:
对于电子邮件:
By.xpath("//div[@class='form-group'][1]/span")
对于密码:
By.xpath("//div[@class='form-group'][2]/span")
但是,您是否还可以提供与您合作的完整HTML页面? 也许表单在iframe中,因此Selenium在定位元素时遇到问题
您需要添加.getText()方法才能获取标记内的文本。
你有没有试过像object.getAttribute("innerHTML")
这样的东西,字面意思是"innerHTML"
,就像这样?
从span标记获取文本时遇到了类似的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.