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();
        
         }
   }    

}
原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12214401.html