java+selenium——查找定位元素,elements复数定位(driver.findElementsByClassName("mnav");)002
elements复数定位:
在上面的例举的八中基本定位方式种,都有对应的复数形式,分别是下面这些:
id复数定位find_elements_by_id()
name复数定位find_elements_by_name()
class复数定位find_elements_by_class_name()
tag复数定位find_elements_by_tag_name()
link复数定位find_elements_by_link_text()
partial_link复数定位find_elements_by_partial_link_text()
xpath复数定位find_elements_by_xpath()
css复数定位find_elements_by_css_selector()
这些复数定位方式每次取到的都是具有相同类型属性的一组元素,所以返回的是一个list队列,我们也可以利用这个去定位单个的元素。
==================================================================================================================
比如百度首页种,右上角有新闻、视频、地图、贴吧等一些链接,我们通过f12查看源码可以发现,这些链接都有共同的class, class="mnav"。
举个例子,比如定位排在第六个的学术,可以这样定位:driver.find_elements_by_class_name("mnav")[5].click()
还可以通过css的复数定位写法:driver.find_elements("css selector",".mnav")[6].click()
当然,也可以借助pop()函数,一般pop()或pop(-1)表示获取元素种的最后一个,pop(2)表示第三个:
driver.find_elements("css selector",".mnav").pop().click()
======================================================================================================
package rjcs; import java.util.List; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.testng.annotations.Test; import com.thoughtworks.selenium.SeleneseTestNgHelper; public class findby { public static void main(String[] args) { System.setProperty("webdriver.firefox.bin","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //设置火狐的安装路径,防止系统找不到 FirefoxDriver driver = new FirefoxDriver(); //初始化FireFox浏览器实例,并打开浏览器 try { driver.manage().window().maximize(); //最大化窗口 Thread.sleep(5000); driver.manage().window().maximize(); //最大化窗口 Thread.sleep(5000); driver.get("https://www.baidu.com"); //打开一个网址,方法一 Thread.sleep(5000); driver.findElementsByClassName("mnav").get(2).click(); //打开地图这个链接 //List<WebElement> myList = driver.findElementsByClassName("mnav"); //获取class的这个数组 //myList.get(0).click(); //打开新闻这个链接 Thread.sleep(5000); }catch (Exception e) { e.printStackTrace(); }finally { driver.quit(); } } }