Selenium+Python3的web自动化测试(三)
本文章内容参考了白夜黑羽教python的教程,出处为http://www.python3.vip/doc/tutorial/selenium/01/
感谢上方大佬!
所整理的正文如下:
首先,在搭建好Selenium+Python3的环境基础上,测试要点如下:
1.切入html内嵌的html中(测试页面http://f.python3.vip/webauto/sample2.html)
1 #先根据源码中内嵌html的属性值(id或name),进入这个内嵌的html,进行操作 2 wd.switch_to.frame('frame1') 3 4 #进入后的操作,例如根据class name 选择元素,返回一个列表 5 elements = wd.find_elements_by_class_name('plant') 6 for element in elements: 7 print(element.text) 8 9 #操作结束后要返回到主html,进行其他操作 10 wd.switch_to.default_content() 11 wd.find_element_by_id('outerbutton').click() 12 wd.quit()
2.点击主html内的链接,切换到新的窗口(测试页面http://f.python3.vip/webauto/sample3.html)
#首先在前面要有一个click操作,打开一个新的页面 for handle in wd.window_handles: wd.switch_to.window(handle) if 'Bing' in wd.title: break #wd.window_handles包含了打开的窗口中所有网页的标号(类似ID的)信息,称为句柄 #wd.switch_to.window(handle)是进入每一个窗口,检查其属性(可以是标题栏,地址栏) #通过判断找到所需窗口后,跳出循环,然后在for循环外,对这个所需窗口进行操作 #返回主html的方法1.如同刚才,用handle判断回去;2.事先保存主html的句柄,最后返回 #事先保存 mainWindow = wd.current_window_handle #最后返回 wd.switch_to.window(mainWindow)
3.选择框的点击--radio框(测试页面http://f.python3.vip/webauto/test2.html)
# 获取当前选中的元素(缺省选择) element = wd.find_element_by_css_selector('#s_radio input[checked=checked]') print('当前选中的是: ' + element.get_attribute('value')) #点击选小雷老师 wd.find_element_by_css_selector('#s_radio input[value="小雷老师"]').click() #源码中checked="checked"表示这个是默认选项
4.选择框的点击--checkbox框
# 先把已经选中的选项全部点击一下,确保所有选项都是未选状态 elements = wd.find_elements_by_css_selector('#s_checkbox input[checked="checked"]') for element in elements: element.click() # 再点小雷老师 wd.find_element_by_css_selector("#s_checkbox input[value='小雷老师']").click()
5.选择框的点击--select框(有专门的类提供操作方法)
"""Select单选框""" #不管原来选的是什么,直接用Select方法选择即可。例如,选择示例里面的小雷老师 # 导入Select类 from selenium.webdriver.support.ui import Select # 创建Select对象 select = Select(wd.find_element_by_id("ss_single")) # 通过 Select 对象选中小雷老师 select.select_by_visible_text("小雷老师") """Select多选框""" #要选中某几个选项,要注意去掉原来已经选中的选项。例如,我们选择示例多选框中的 小雷老师 和 小凯老师 # 导入Select类 from selenium.webdriver.support.ui import Select # 创建Select对象 select = Select(wd.find_element_by_id("ss_multi")) # 清除所有 已经选中 的选项 select.deselect_all() # 选择小雷老师 和 小凯老师 select.select_by_visible_text("小雷老师") select.select_by_visible_text("小凯老师") """Select主要方法及简单说明""" #根据选项的 value属性值 ,选择元素。比如<option value="foo">Bar</option> s.select_by_value('foo') #根据选项的 次序 (从1开始),选择元素 select_by_index #根据选项的 可见文本 ,选择元素。比如<option value="foo">Bar</option> select_by_visible_text('Bar') #根据选项的value属性值, 去除 选中元素 deselect_by_value #根据选项的次序,去除 选中元素 deselect_by_index #根据选项的可见文本,去除 选中元素 deselect_by_visible_text #去除 选中所有元素 deselect_al