簡體   English   中英

在Selenium(Java)中通過cssSelector獲取元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM