以下演示操作以该网站为例:https://learn.letskodeit.com/p/practice
一、如何操作多个元素(把多个元素放到集合容器中然后操作它们)
列如我们需要操作这些单选框::
首先我们需要找到这3个元素通用的属性,然后根据这些属性写出xpath,才能够把它们放到集合中进行操作
我们的xpath可以写成://input[@type='radio']
但如果页面中有多个radio标签,那么该xpath就不能准确定位,为了确保精准定位我们可以将xpath写成://input[contains(@type,'radio') and contains(@name,'cars')]
1 package basicweb; 2 3 4 import java.util.List; 5 import java.util.concurrent.TimeUnit; 6 7 import org.junit.jupiter.api.AfterEach; 8 import org.junit.jupiter.api.BeforeEach; 9 import org.junit.jupiter.api.Test; 10 import org.openqa.selenium.By; 11 import org.openqa.selenium.WebDriver; 12 import org.openqa.selenium.WebElement; 13 import org.openqa.selenium.chrome.ChromeDriver; 14 15 class ElementList { 16 WebDriver driver; 17 String url; 18 19 @BeforeEach 20 void setUp() throws Exception { 21 driver = new ChromeDriver(); 22 url = "https://learn.letskodeit.com/p/practice"; 23 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 24 driver.manage().window().maximize(); 25 driver.get(url); 26 } 27 28 @Test 29 void test() throws Exception { 30 // 1、查找出我们需要操作的单选 31 // 新建一个集合引用,表示该集合中装的都是WebElement类型的对象 32 List<WebElement> radioButtons = driver.findElements(By.xpath("//input[contains(@type,'radio') and contains(@name,'cars')]")); 33 34 // 2、操作查找到的元素 35 // 获取集合的大小 36 int size = radioButtons.size(); 37 boolean isCheck = false; 38 // 打印集合大大小 39 System.out.println("集合的大小是:"+size); 40 // 使用for对元素进行循环操作 41 for(int i = 0 ; i < size ; i++) { 42 // 通过get方法获取单选框的角标,然后判断单选框是否被选中 43 isCheck = radioButtons.get(i).isSelected(); 44 // 如果没有选中 45 if(!isCheck) { 46 // 就点击 47 radioButtons.get(i).click(); 48 Thread.sleep(2000); 49 } 50 } 51 } 52 53 @AfterEach 54 void tearDown() throws Exception { 55 Thread.sleep(2000); 56 driver.quit(); 57 } 58 }
注意:
1、使用查找元素的方法时,我们需要用“.findElements”这个方法
2、需要导入“java.util.List”这个包
如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习、摸鱼、吹水。