繁体   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