一、Selenium总共有八种定位方法
By.id() 通过id定位
By.name() 通过name 定位
By.xpath() 通过xpath定位
By.className() 通过className定位
By.cssSelector() 通过CSS 定位
By.linkText() 通过linkText
By.tagName() 通过tagName
By.partialLinkText() 通过匹到的部分linkText
目前,使用比较多的是cssSelector和xpath,
cssSelector有一些高级用法,熟练后可以方便地定位元素,如^用于匹配一个前缀,$用于匹配一个后缀,*用于匹配任意字符。例如:
a. 匹配一个有id属性,并且id属性是以”id_prefix_”开头的超链接元素:a[id^='id_prefix_']
b. 匹配一个有id属性,并且id属性是以”_id_sufix”结尾的超链接元素:a[id$='_id_sufix']
c. 匹配一个有id属性,并且id属性中包含”id_pattern”字符的超链接元素:a[id*='id_pattern']
最后总结:
1. 当页面元素有id属性时,最好尽量用id来定位。
2. xpath很强悍,但定位性能不是很好,所以尽量少用。如果确实少数元素不好定位,可以选择xpath或cssSelector。
3. 当要定位一组元素相同元素时,可以考虑用tagName(HTML 标记名称)或name。
4. 当有链接需要定位时,可以考虑linkText或partialLinkText方式。
NoSuchElementFoundException
findElement()和findElements()方法在找不到相应的元素时,就会抛出NoSuchElementFoundException异常
二、常用浏览器操作
// 1.浏览器中加载URL: get() --首先要启动浏览器driver.get("https://www.baidu.com");driver.navigate().to("http://www.baidu.com/");
//navigate方法会产生1个Navigator对象,其封装了与导航相关的一些方法,比如前进后退等
// 2.浏览器最大化: window().maximize()
driver.manage().window().maximize();
// 3.刷新:refresh() driver.navigate().refresh();
// 4.截图:getScreenshotAs() File screenfile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(screenfile,new File("D:/12306.png"));
// 5.获取当前页的URL:getC