一般驗證復選框是否可以選擇點擊常用到定位一組元素去循環遍歷執行點擊事件。但是有時候在不同的瀏覽器下可能會存在差異化的最終結果。
目前谷歌瀏覽器常常存在多次點擊同一復選框,導致最終最后兩項復選框均未被勾選。但是在火狐瀏覽器所有的復選框均被勾選上,火狐可以和IE一起,直接在添加IE TAB插件即可。
HTML代碼如下:
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>Checkbox</title> <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" /> <script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script> </head> <body> <h3>checkbox</h3> <div class="well"> <form class="form-horizontal"> <div class="control-group"> <label class="control-label" for="c1">checkbox1</label> <div class="controls"> <input type="checkbox" id="c1" /> </div> </div> <div class="control-group"> <label class="control-label" for="c2">checkbox2</label> <div class="controls"> <input type="checkbox" id="c2" /> </div> </div> <div class="control-group"> <label class="control-label" for="c3">checkbox3</label> <div class="controls"> <input type="checkbox" id="c3" /> </div> </div> </form> </div> </body> </html>
谷歌瀏覽器代碼如下:
public static void main(String[] args) throws IOException, InterruptedException { System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe"); ChromeOptions Options = new ChromeOptions(); Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data"); WebDriver driver = new ChromeDriver(Options); try { File file = new File("C:/Users/happy/Desktop/NewFile.html"); // Java 流(Stream) 中的File類 String filepath = file.getAbsolutePath(); // 獲取文件的絕對路徑 driver.get(filepath); // 在瀏覽器中打開相關文件NewFile.html List<WebElement> inputs = driver.findElements(By.tagName("input")); // 把所有的input標簽放入List集合。然后用foreach 遍歷元素。 for (WebElement checkbox : inputs) { String type1 = new String(checkbox.getAttribute("type")); if (type1.equals("checkbox")) { System.out.println(checkbox.getAttribute("id")); // 打印出執行點擊操作的元素的id checkbox.click(); } } } finally { Thread.sleep(10000); driver.close(); driver.quit(); } }

火狐瀏覽器
public static void main(String[] args) { System.setProperty("webdriver.gecko.driver", "D:/firefox-47.0.1.win64.sdk/firefox-sdk/bin/geckodriver.exe"); WebDriver driver = new FirefoxDriver(); try { // File file = new File("C:/Users/happy/Desktop/NewFile.html"); // // Java 流(Stream) 中的File類 // String filepath = file.getAbsolutePath(); // 獲取文件的絕對路徑 driver.get("file:///c:/Users/happy/Desktop/NewFile.html"); // 在瀏覽器中打開相關文件NewFile.html List<WebElement> inputs = driver.findElements(By.tagName("input")); // 把所有的input標簽放入List集合。然后用foreach 遍歷元素。 for (WebElement checkbox : inputs) { String type1 = new String(checkbox.getAttribute("type")); if (type1.equals("checkbox")) { System.out.println(checkbox.getAttribute("id")); // 打印出執行點擊操作的元素的id checkbox.click(); } } } finally{ driver.close(); driver.quit(); } }

driver.navigate().refresh();
這個方法用於刷新頁面。
inputs.size()
size()方法可以計算獲得元素的個數。這里獲得的結果為3。3 減1 為2。
inputs.get().click();//集合的get()方法,可以直接對指定元素進行操作。獲取集合中的指定元素。
get()指定得到元素組中的第幾個元素,並對其時行click()操作。
