一般验证复选框是否可以选择点击常用到定位一组元素去循环遍历执行点击事件。但是有时候在不同的浏览器下可能会存在差异化的最终结果。

目前谷歌浏览器常常存在多次点击同一复选框,导致最终最后两项复选框均未被勾选。但是在火狐浏览器所有的复选框均被勾选上,火狐可以和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()操作。

seleniumu 3.0复选框操作(定位一组元素)的更多相关文章

  1. python之tkinter使用-复选框操作

    # tkinter复选框操作 import tkinter as tk root = tk.Tk() root.title('问卷调查') root.geometry('220x80') # 设置窗口 ...

  2. C#:复选框操作类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  3. JS及Dom练习 | 模态对话框及复选框操作

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. DataGridView 复选框 操作大全

    DataGridViewCheckBoxColumn dtCheck = new DataGridViewCheckBoxColumn(); dtCheck.DataPropertyName = &q ...

  5. python selenium单/复选框操作

    一.单选:radio 1.首先是定位选择框的位置 2.定位id,点击图标就可以了,代码如下(获取url地址方法:把上面源码粘贴到文本保存为.html后缀后用浏览器打开,在浏览器url地址栏复制出地址就 ...

  6. jQuery——复选框操作

    学习jQuer对表单.表格操作的过程中,按照书上的例子发现一个问题: <!DOCTYPE html> <html> <head> <title>复选框应 ...

  7. 【jQuery】对于复选框操作的attr与prop

    这个是在jQuery1.6版本号之后出现的鬼东西.受影响的主要有下拉列表select与复选框checkbox.众所周知.在jQuery中能够用attr()取出节点的属性,然而对于checkbox却不是 ...

  8. selenium--表格和复选框的定位

    表格定位 HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  9. selenium之复选框操作

    HTML源码: <!DOCTYPE html> <div lang="en"></div></div> <head> & ...

随机推荐

  1. 团队作业4——第一次项目冲刺(Alpha版本)-第一篇

    第一次项目冲刺——第一阶段 今天我们在宿舍开了个会,每个人都斗志昂扬的.撸起袖子加油干! 分工讨论 团队成员 任务 郭达  完成博客随笔和leangoo 刘德培  设计好数据库 石浩洋  搭建好LAM ...

  2. PAT 1086 就不告诉你

    https://pintia.cn/problem-sets/994805260223102976/problems/1038429065476579328 做作业的时候,邻座的小盆友问你:“五乘以七 ...

  3. java线程(7)——阻塞队列BlockingQueue

    回顾: 阻塞队列,英文名叫BlockingQueue.首先他是一种队列,联系之前Java基础--集合中介绍的Queue与Collection,我们就很容易开始今天的阻塞队列的学习了.来看一下他们的接口 ...

  4. Spring Data JPA 简单查询

    一.常用规则速查 1  And 并且2  Or  或3  Is,Equals 等于4  Between  两者之间5  LessThan 小于6  LessThanEqual   小于等于7  Gre ...

  5. 算法(5)Jump Game

    题目:非负数的数组,每个数组元素代表这你能最大跨越多少步,初始在0的位置,问,能不能正好调到数组的最后一位! https://leetcode.com/problems/jump-game/#/des ...

  6. regex & form validation & phone

    regex & form validation https://regexper.com/ https://gitlab.com/javallone/regexper-static https ...

  7. NET中解决KafKa多线程发送多主题

    NET中解决KafKa多线程发送多主题 一般在KafKa消费程序中消费可以设置多个主题,那在同一程序中需要向KafKa发送不同主题的消息,如异常需要发到异常主题,正常的发送到正常的主题,这时候就需要实 ...

  8. 【题解】SDOI2014旅行

    洛谷P3313 大概是一道树链剖分的裸题.可以看出如果不是查询相同宗教的这一点,就和普通的树链剖分毫无两样了.所以针对每一个宗教都单独开一棵线段树,变成单点修改+区间查询.只不过宗教数目很多,空间消耗 ...

  9. [codeforces] 633C Spy Syndrome 2

    原题 Trie树+dp 首先,我们可以简单的想到一种dp方式,就是如果这一段可以匹配并且可以与前一段接上,那么更新dp[i]为当前字符串的编号,然后倒推就可以得到答案. 但是,显然我们不能O(m)比较 ...

  10. BZOJ1051:受欢迎的牛(并查集 / Tarjan)

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 8161  Solved: 4460 Description ...