![](/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.