在完成了selenium的配置之后,我们已经可以通过selenium打开浏览器并且跳转到我们所设置的网页了。接下来所要做的就是对网页进行操作了,要对网页进行操作就需要用到selenium的方法,接下来我将通过一个例子来介绍一些selenium常用的方法。

    首先,我们需要选择一个进行实验的网页,这里我选择了phpwind搭建的论坛,关于phpwind搭建论坛的方法自行网上搜索即可,这里不展开讲了。

    选完网页之后,接下来就要查找我们需要进行操作的元素了这里我选择Firefox浏览器对网页的元素进行查找,只需按F12就可以调出开发者模式,然后使用如下图中的鼠标按钮进行查找即可。

selenium通过和Java接口触发 selenium教程java_css

selenium通过和Java接口触发 selenium教程java_System_02


立即注册这个按钮的元素,按钮的元素如下:

selenium通过和Java接口触发 selenium教程java_文本框_03


    接下来,我们只需要选择其中一个元素然后利用selenium进行定位即可,这里我们需要用到driver.findElement(by)这个方法来定位元素,可以使用以下几种方法进行定位:

    Id定位:driver.findElement(By.id(id));

    Name定位:driver.findElement(By.name(name));

    Css定位:driver.findElement(By.cssSelector(selector));

    Xpath定位:driver.findElement(By.xpath(xpathExpression));

    LinkText定位:driver.findElement(By.linkText(linkText));

    Tag定位:driver.findElement(By.tagName(name));

    Classname定位:driver.findElement(By.className(className));

    部分链接定位:driver.findElement(By.partialLinkText(linkText));//只需写一部分链接文本即可。

    这些方法自行选择使用即可,对于某些例如xpath方法中更加深入的内容,有兴趣的可以网上搜索。

    完成元素的定位之后,我们只需在driver.findElement(by)后面选择我们所要进行的操作即可,这里因为我们要点击立即注册的按钮,所以代码是

driver.findElement(By.xpath("/html/body/
    div/div[2]/div[3]/div[2]/div[1]/dd/a")).click();

这样就可以跳转到注册界面了。

selenium通过和Java接口触发 selenium教程java_css_04


    可以看到注册界面有4个需要我们输入内容的文本框,我们也需要先定位元素才能对文本框进行操作。

//清空文本框内容
driver.findElement(By.id("J_reg_username")).clear();
//向文本框输入信息
driver.findElement(By.id("J_reg_username")).sendKeys("123456789");

    在对文本框进行操作时,一般用到的就以上两个方法,先用clear方法清空文本框里的内容,然后用sendKeys方法向文本框输入信息。接下来只需重复以上操作,填写所有文本框,然后定位同意并注册按钮,点击即可完成注册。
    至此,对于selenium常用的基本方法已介绍完毕。接下来总结一下常用的几个方法:
定位元素可以使用以下方法:

driver.findElement(By.id(id));//id定位
    driver.findElement(By.name(name));//name定位
    driver.findElement(By.cssSelector(selector));//css定位
    driver.findElement(By.xpath(xpathExpression));//xpath定位
    driver.findElement(By.linkText(linkText));//linkText定位
    driver.findElement(By.tagName(name));//tag定位
    driver.findElement(By.className(className));//classname定位
    driver.findElement(By.partialLinkText(linkText));//部分链接定位,只需写一部分文本链接即可。

完成元素定位后,可进行的操作有以下几种:

driver.findElement(By.id(id)).click()//单击该元素
driver.findElement(By.id(id)).clear()//清空文本框的内容
driver.findElement(By.id(id)).sendKeys()//向文本框输入内容

最后附上本次实验代码:

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class login {
    public static void main(String[] args) {
        //启动浏览器
        String driverPath=System.getProperty("user.dir")+
                "/geckodriver-v0.21.0-win64/geckodriver.exe";   
        System.setProperty("webdriver.gecko.driver",driverPath);
        WebDriver driver=new FirefoxDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
        driver.get("http://localhost/phpwind/");
        //对网页进行操作
        driver.findElement(By.xpath("/html/body/div/div[2]/"
                + "div[3]/div[2]/div[1]/dd/a")).click();
        driver.findElement(By.id("J_reg_username")).clear();
        driver.findElement(By.id("J_reg_username")).sendKeys("123456789");
        driver.findElement(By.id("J_reg_password")).clear();
        driver.findElement(By.id("J_reg_password")).sendKeys("123456");
        driver.findElement(By.id("J_reg_repassword")).clear();
        driver.findElement(By.id("J_reg_repassword")).sendKeys("123456");
        driver.findElement(By.id("J_reg_email")).clear();
        driver.findElement(By.id("J_reg_email")).sendKeys("123456@qq.com");
        driver.findElement(By.xpath("/html/body/div/div[2]/div/div[1]/"
                + "div/form/div/dl[5]/dd/button")).click();

        System.out.println("完成注册");
        driver.close(); 
    }

}