Java + selenium 元素定位(1)之By id/Name/ClassName

        这篇文章开始,要介绍web自动化核心的内容,也是最困难的部分了,就是定位元素,并去对元素进行操作。想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如果连元素都定位不到,后续什么操作都是扯淡。在selenium中查找元素的接口是findElement接口了。findElement接口支持八种查找网页元素的方法,这篇文章就先介绍比较简单方便的三种方法:By id,By Name, By ClassName。

       我们还是用百度为例,查看代码的方法呢。我用的是浏览器自带的开发者工具,也就是按“F12”打开的窗口。点击窗口右上角的这个图标,之后鼠标点击网页上你想要对齐操作的部分,打开的窗口就会显示该部分的代码了。例如我们要对百度搜索的输入框进行查找定位。点击完输入框之后可以看到以下代码

        图中蓝条中的代码就是我们点击的输入框的代码,展开可以看到这些内容。红色框框所框出来的就是输入框的一些信息。例如id = "kw"  name = "wd" class = "s_ipt"。

        同理我们可以找到“百度一下”按钮的信息。得到id = "su"  class = "bg s_btn"。

        这里有个要注意的地方。我们可以看到,百度按钮的class中包含了空格。而在By ClassName 方法中,如果Class包含空格,是不能被识别,会报错。所以当所要定位的元素的Class包含空格时,我们就不能使用By ClassName方法对其进行查找操作,而应该换一种方法。

        比如我们要往输入框中输入“自动化测试”,并查找。则代码展示如下

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
 
 
public class PageLoadTest {
    
public static void main(String[] args) {
        
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
        
        WebDriver driver = new ChromeDriver();
        
        driver.get("https://www.baidu.com");
    
        driver.findElement(By.id("kw")).sendKeys("自动化测试");              //用By id方法,对输入框进行输入操作

// driver.findElement(By.Name("wd")).sendKeys("自动化测试"); //用By Name方法

// driver.findElement(By.ClassName("s_ipt")).sendKeys("自动化测试") //用By ClassName方法
        driver.findElement(By.id("su")).click();                            //对按钮进行点击操作
} }

        上述代码中出现的sendKeys()方法和click()方法在此简单介绍一下。

        sendKeys()方法就是给元素输入字符的方法,输入参数一般都是String类型。

        click()方法就是模拟鼠标左键点击的操作。

 

posted @ 2018-08-24 11:54  菜鸟的一天  阅读(1173)  评论(1编辑  收藏  举报