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")