定位一组对象一般用于以下场景:
- 批量操作对象,比如将页面上所有的checkbox都勾上
- 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象。比如定位出页面上所有的checkbox,然后选择最后一个
checkbox.html
1 <html> 2 <head> 3 <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 4 <title>Checkbox</title> 5 <script type="text/javascript" async="" 6 src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 7 <link 8 href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined 9 .min.css" rel="stylesheet" /> 10 <script 11 src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></ 12 script> 13 </head> 14 <body> 15 <h3>checkbox</h3> 16 <div class="well"> 17 <form class="form-horizontal"> 18 <div class="control-group"> 19 <label class="control-label" for="c1">checkbox1</label> 20 <div class="controls"> 21 <input type="checkbox" id="c1" /> 22 </div> 23 </div> 24 <div class="control-group"> 25 26 <label class="control-label" for="c2">checkbox2</label> 27 <div class="controls"> 28 <input type="checkbox" id="c2" /> 29 </div> 30 </div> 31 <div class="control-group"> 32 <label class="control-label" for="c3">checkbox3</label> 33 <div class="controls"> 34 <input type="checkbox" id="c3" /> 35 </div> 36 </div> 37 <div class="control-group"> 38 <label class="control-label" for="r">radio</label> 39 <div class="controls"> 40 <input type="radio" id="r1" /> 41 </div> 42 </div> 43 <div class="control-group"> 44 <label class="control-label" for="r">radio</label> 45 <div class="controls"> 46 <input type="radio" id="r2" /> 47 </div> 48 </div> 49 </form> 50 </div> 51 </body> 52 </html>
checkbox_test.py
#conding = utf-8 from selenium import webdriver import os class checktest(): def __init__ (self): self.driver = webdriver.Chrome() file_path = ‘file:///‘ + os.path.abspath(‘checkbox.html‘) self.driver.get(file_path) self.driver.maximize_window() def checkboxs (self): #定义一个勾选多选框方法 self.driver.implicitly_wait(30) #定位一组type为checkox的标签,遍历。遍历出来的一一勾选 checkboxes = self.driver.find_elements_by_css_selector(‘input[type=checkbox]‘) for checkbox in checkboxes: checkbox.click() def check_1 (self): self.driver.implicitly_wait(50) #定位定位一组input标签,遍历出来。使用get_attribute()方法获取对象属性,当属性为checkbox时勾选 inputs = self.driver.find_elements_by_tag_name(‘input‘) for inputes in inputs: if inputes.get_attribute(‘type‘) == ‘checkbox‘: inputes.click() def check_2 (self): #调用勾选方法 self.checkboxs() def check_3 (self): #调用勾选方法 self.checkboxs() #打印定位到type为checkbox的元素个数 print(len(self.driver.find_elements_by_css_selector(‘input[type=checkbox]‘))) #使用pop()方法去掉最后一个勾选 self.driver.find_elements_by_css_selector(‘input[type=checkbox]‘).pop().click() def quit (self): self.driver.quit()
将两段代码保存为相应的文件,并且在同一目录下
------------------------------------------------------------------------------------------------------------------------------------
更多内容可查看乙醇的小册子
https://easonhan007.gitbooks.io/selenium-webdriver/content/
时间: 2024-10-23 07:42:25