Selenium学习笔记2 -- 元素定位

1. 常见web元素

链接、输入框、按钮、下拉选择框、多选框、表单、页面文本等

 

2. 定位单个元素

前提: WebDriver driver = new ChromeDriver();

-- id   

WebElement bb = driver.findElement(By.id("kw"));   同一个页面中,id具有唯一性,因此通过id定位的元素具有唯一性

-- name   

WebElement bb = driver.findElement(By.name("wd"));  不具有唯一性,可能有多个

-- class name   

WebElement bb = driver.findElement(By.className("s_ipt"));

-- tag name

WebElement bb = driver.findElement(By.tagName("input"));

-- link text

WebElement bb = driver.findElement(By.linkText("新闻"));

-- partial link text

WebElement bb = driver.findElement(By.partialLinkText("新"));

-- xpath

(1) xpath是XML中的一种定位语言

(2) WebElement bb = driver.findElement(By.xpath("//*[@id='kw']"))   /   driver.findElement(By.xpath("//input[@id='kw' and @name='wd']"))

(3) PageFactory 设计模式,通过注解方式来定位元素对象

   @FindBy(xpath = "//input[@id='kw']")
   private WebElement userInput; //将@FindBy注解通过对应的定位方法找到的元素赋值给成员变量


   WebDriver driver = new ChromeDriver(); //实例化driver
   driver.get("https://www.baidu.com/"); //导航到正确的页面
   HelloSelenium m = PageFactory.initElements(driver, HelloSelenium.class);  //创建一个页面类的实例,同时将页面元素字段初始化
   m.userInput.sendKeys("java123");  

-- css selector

WebElement bb = driver.findElement(By.cssSelector("#kw");

 

3. 定位一组元素

(1) List<WebElement> search_result = driver.findElements(By.xpath("//div/div/h3"));  

定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词 findElement 后面多了一个 s 表示复数

(2) String[] ary = new String []{"seleniumaaa","sdf","ffd ","rgrh"};//你所定义的数组

    @FindBy(xpath = "//input[@id='kw']")

    private List<WebElement> userInput; //将@FindBy注解通过对应的定位方法找到的元素赋值给成员变量

    m.userInput.get(0).sendKeys(m.ary[1]);

 

4. 定位表格中的元素

By.xpath("//*[@id='reprojectionTab_Panel_2']//table[@id='payoutTable']/thead/tr[@id='headerRow_0']/th[3]")

 

5. 谷歌浏览器查找元素

打开浏览器界面,右键选择inspect(检查),选择箭头,需要查找哪个元素信息就点哪里 / 或通过前端工具Firebug查找页面元素

 

6. 验证元素定位

-- https://blog.csdn.net/weixin_43277055/article/details/85319676

-- chrome开发者工具,选console tab-->ctrl+L清空console内容--->输入:$x(“your_xpath_selector”) ,括号里需要通过双引号括起来,如果Xpath语句中有双引号,要改成单引号

$x("/html/body/div[4]/div/ul/li[1]/a")  /  $x("//*[@id='ibLogonForm']/div[1]/label")

 

posted @ 2021-04-25 12:13  meiyouyou  阅读(88)  评论(0编辑  收藏  举报