python-selenum3 第六天
- 2020 年 1 月 8 日
- 筆記
1.循环遍历所有的下拉列表值 2.单选下拉列表 3.多选择列表的选中与取消 4.操作单选框、多选框以及断言及全部选中 5.断言页面源码中的关键字 6.截屏 7.拖拽页面元素
1. 循环遍历所有的下拉列表值
<!--练习的html--> 学历:<select id="zz" name="ss" size="1"> <option value ="you">幼儿园</option> <option value ="xiao">小学</option> <option value ="chu">初中</option> <option value ="gao">高中</option> <option value ="da">大学</option> </select>
from selenium import webdriver #导入select模块 from selenium.webdriver.support.select import Select driver = webdriver.Firefox(executable_path="d:\geckodriver") url = "file:///d:/day8.html" driver.get(url) #定位下拉菜单 select_element = driver.find_element_by_id("zz") #将所有的内容保存并赋值给options 注意这里是所有元素 所以用elements options = select_element.find_elements_by_tag_name("option") #循环显示加打印 for option in options: print("选项显示的文本:",option.text) print("选项值为:",option.get_attribute("value")) option.click() import time time.sleep(1)
2.单选下拉列表
from selenium import webdriver from selenium.webdriver.support.select import Select driver = webdriver.Firefox(executable_path="E:\geckodriver.exe") driver.get("file:///d:/day8.html") #定位下拉菜单 xiala = driver.find_element_by_id("zz") #通过序号选择,序号从0开始,2为初中 Select(xiala).select_by_index(2) #通过value属性值选择,选择高中 Select(xiala).select_by_value("gao") #通过文本值选择,直接选择大学 Select(xiala).select_by_visible_text(u"大学")
3.多选择列表的选中与取消
<!--练习的html--> 学历:<select id="zz" name="ss" size="6" multiple="true"> <option value ="you">幼儿园</option> <option value ="xiao">小学</option> <option value ="chu">初中</option> <option value ="gao">高中</option> <option value ="da">大学</option> </select>
from selenium import webdriver from selenium.webdriver.support.select import Select driver = webdriver.Firefox(executable_path="E:\geckodriver.exe") driver.get("file:///d:/day8.html") #定位下拉菜单 xiala = driver.find_element_by_id("zz") #多选后为选择初中、高中、大学 Select(xiala).select_by_index(2) Select(xiala).select_by_value("gao") Select(xiala).select_by_visible_text(u"大学") #取消已经选择的内容(下面简写了,比选择多加了个de而已,最后一个是取消所有已经选中) Select(xiala).deselect_by_index(2) Select(xiala).deselect_by_value("gao") Select(xiala).deselect_by_visible_text(u"大学") Select(xiala).deselect_all()
4.操作单选框、多选框以及断言及全部选中
<!--练习的html--> <!--单选--> <p> 性别:男<input type="radio" name="r1" checked/> 女<input type="radio" name="r1" /> 不明<input type="radio" name="r1" /> </p> <!--多选--> <p> 爱好:游戏<input type="checkbox" name="c1" checked/> 文艺<input type="checkbox" name="c2" /> 睡觉<input type="checkbox" name="c3" /> </p>
from selenium import webdriver driver = webdriver.Firefox(executable_path="E:\geckodriver.exe") driver.get("file:///d:/day8.html") #最简单的单选和多选,直接点击选择框即可 下面为单选女的选择点击 xuanzhong = driver.find_element_by_xpath("/html/body/form/p[2]/input[2]") xuanzhong.click() #断言是否被选中(选择需要配合框架使用) assertTrue(xuanzhong.is_selected(),u"女没有被选中") #一次性将所有的多选选项全部选择(一定要注意因为一次性多选所以是elements) #注意:因为游戏是默认,所以在次点击等于取消了选择,下面结果为选中文艺和睡觉 duoxuan = driver.find_elements_by_xpath(".//*[@type='checkbox']") for i in duoxuan: i.click()
5.断言页面源码中的关键字
from selenium import webdriver driver = webdriver.Firefox(executable_path="E:\geckodriver.exe") driver.get("https://www.baidu.com") driver.find_element_by_id("kw").send_keys("WIKTK") driver.find_element_by_id("su").click() import time time.sleep(4) #断言页面源码中的关键字 assert "WIKTK" in driver.page_source, u"页面中源码中不存在该关键字"
6.截屏
from selenium import webdriver driver = webdriver.Firefox(executable_path="E:\geckodriver.exe") driver.get("https://www.baidu.com") driver.save_screenshot(r"d:截图.png")
7.拖拽页面元素
from selenium import webdriver driver = webdriver.Firefox(executable_path="E:\geckodriver.exe") driver.get("http://jqueryui.com/resources/demos/draggable/scroll.html") #定位第一、第二、第三拖动框体 yi = driver.find_element_by_id("draggable") er = driver.find_element_by_id("draggable2") san = driver.find_element_by_id("draggable3") #导入拖拽元素方法模块 from selenium.webdriver import ActionChains a_chains = ActionChains(driver) #第一个框拖动到第二个框 a_chains.drag_and_drop(yi, er).perform() #将第三个框平移500 a_chains.drag_and_drop_by_offset(san,500, 0).perform()