1.簡介
?? 在實際自動化測試過程中,我們同樣也避免不了會遇到單選和多選的測試,特別是調(diào)查問卷或者是答題系統(tǒng)中會經(jīng)常碰到。因此宏哥在這里直接分享和介紹一下,希望小伙伴或者童鞋們在以后工作中遇到可以有所幫助。
2.什么是單選框、復選框?
單選按鈕一般叫raido button,就像我們在電子版的單選答題過程一樣,單選只能點擊一次,如果點擊其他的單選,之前單選被選中狀態(tài)就會變成未選中。單選按鈕的點擊,一樣是使用click方法。多選按鈕,就是復選框,一般叫checkbox,就像我們在電子版的多選答題過程一樣,可以選擇多個選項,多選按鈕的點擊,同樣是使用click方法。簡單地說,復選框可以允許你選擇多個設(shè)置,而單選框則允許你選擇一個設(shè)置。如下圖所示:
3.被測頁面html源代碼
3.1 radio.html
1.準備測試練習radio.html,如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>測試單選</title> <style type="text/css"> .button1 { background-color: #f44336; border: none; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 28px; margin: 20px 300px 50px 300px; text-decoration:none; color: white; } #myAnchor { text-decoration:none; color: white; } #hg { margin: 20px 300px 50px 300px; } </style> </head> <body> <button class="button1"><a id="myAnchor" href="https://www.cnblogs.com/du-hong/">北京-宏哥</a></button></br> <div id="hg"> <div> <h3>復選框 checkbox</h3> 請選擇喜歡的打野英雄:<br> <label><input name="checkbox1" type="checkbox" value="李白"/>李白 </label><br> <label><input name="checkbox2" type="checkbox" value="韓信"/>韓信 </label><br> <label><input name="checkbox3" type="checkbox" value="公孫離" checked="checked"/>公孫離 </label><br> <label><input name="checkbox4" type="checkbox" value="露娜"/>露娜 </label><br> </div> <div> <h3>單選框 radio</h3> 選擇喜歡的打野英雄:<br> <label><input name="radio" type="radio" value="0" checked="checked"/>李白 </label><br> <label><input name="radio" type="radio" value="1"/>韓信 </label><br> <label><input name="radio" type="radio" value="2"/>露娜 </label><br> <label><input name="radio" type="radio" value="3"/>孫尚香 </label><br> </div> </div> </body> </html>
2.頁面效果,如下圖所示:
4.判斷是否選中:isSelected()
有時單選框、復選框會有默認選中的狀況,那么有必要我在操做單選框或者復選框的時候,先判斷選項框是否為選中狀態(tài)。使用element.isSelected()來獲取元素是否為選中狀態(tài),返回結(jié)果為布爾類型,若是為選中狀態(tài)返回true,若是未選中返回為false。至于操做就沒必要多說了,對你們來說是so easy,就點擊就能夠了。html
5.單選框處理
5.1代碼設(shè)計
5.2參考代碼
具體實例代碼以下:
package lessons; import java.util.concurrent.TimeUnit; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * @author 北京-宏哥 * * 《手把手教你》系列技巧篇(三十三)-java+ selenium自動化測試-單選和多選按鈕操作-上篇(詳解教程) * * 2021年10月16日 */ public class TestRadio { @Test public void testRadio() { System.setProperty("webdriver.gecko.driver", ".\Tools\chromedriver.exe"); WebDriver driver =null; driver =new ChromeDriver(); driver.get("file:///C:/Users/DELL/Desktop/test/radio.html"); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); //獲取第1個單選框李白元素對象 WebElement element = driver.findElement(By.cssSelector("[value='0']")); boolean isSelected = element.isSelected(); //查看李白是否被選中 if (isSelected){ System.out.println("李白已被選中,你只能選下一個英雄了"); } //獲取第3個單選框露娜元素對象 element = driver.findElement(By.cssSelector("[value='2']")); //判斷是否被選中 if(!element.isSelected()){ //若是未被選中,就能夠直接選了 element.click(); } } }
5.3運行代碼
1.運行代碼,右鍵Run AS->Junit Test,控制臺輸出,如下圖所示:
2.運行代碼后電腦端的瀏覽器的動作,如下小視頻所示:
6.復選框處理
6.1代碼設(shè)計
6.2參考代碼
具體實例代碼以下:
package lessons; import java.util.List; import java.util.concurrent.TimeUnit; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * @author 北京-宏哥 * * 《手把手教你》系列技巧篇(三十三)-java+ selenium自動化測試-單選和多選按鈕操作-上篇(詳解教程) * * 2021年10月16日 */ public class TestRadio1 { @Test public void testRadio() { System.setProperty("webdriver.gecko.driver", ".\Tools\chromedriver.exe"); WebDriver driver =null; driver =new ChromeDriver(); driver.get("file:///C:/Users/DELL/Desktop/test/radio.html"); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(300, TimeUnit.SECONDS); //獲取第三個復選框公孫離元素對象 WebElement element = driver.findElement(By.name("checkbox3")); boolean isSelected = element.isSelected(); try { //若是選中取消選中 if (isSelected){ element.click(); } //若是選中取消選中,為了看清楚等待一會 Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } /** * 全選操做 */ List<WebElement> elements = driver.findElements(By.cssSelector("[type='checkbox']")); for (WebElement webElement :elements) { //點擊選中 webElement.click(); } } }
6.3運行代碼
1.運行代碼,右鍵Run AS->Junit Test,控制臺輸出,如下圖所示:
2.運行代碼后電腦端的瀏覽器的動作,如下小視頻所示:
7.小結(jié)
? 注意定位單選或者多選的時候,要定位前邊選擇框不是定位文字,否則或出現(xiàn)點擊選擇框沒有反應的效果。
本文摘自 :https://www.cnblogs.com/