Selenium示例集锦--常见元素识别方法、下拉框、文本域及富文本框、鼠标操作、一组元素定位、弹窗、多窗口处理、JS、frame、文件上传和下载

摘要:
元素定位和其他操作0。识别元素的常用方法是什么?如果有唯一的ID,则使用该ID定位元素;如果没有,最好使用xpath来定位;如果xpath位置失败,则使用哪个位置是可行的。

元素定位及其他操作

0、常见的识别元素的方法是什么?

复制代码
1 driver.find_element_by_id()
2 driver.find_element_by_name()
3 driver.find_element_by_class_name()
4 driver.find_element_by_tag_name()
5 driver.find_element_by_link_text()
6 driver.find_element_by_partial_link_text()
7 driver.find_element_by_xpath()
8 driver.find_element_by_css_selector()
复制代码
web UI自动化测试元素识别的原则是什么?
如果有唯一的id,就用id定位元素;
如果没有,最好使用xpath定位;
如果xpath定位失败,哪个可行使用哪个。

1、下拉框

复制代码
 1 #两种方式实现下拉框的选择操作
 2 from selenium import webdriver
 3 from selenium.webdriver.support.select import Select
 4 
 5 driver = webdriver.Firefox()
 6 driver.get("file:///C:/Users/hanxiaobei/Desktop/1.html")
 7 ele = driver.find_element_by_xpath(".//*[@id='status']")
 8 # Select(ele).select_by_index(2) #下标形式选择
 9 Select(ele).select_by_value("2")  #源码value值相对应方式
10 
11 '''html
12 <select id="status" class="form-control valid" onchange="" name="status">
13     <option value=""></option>
14     <option value="0">未审核</option>
15     <option value="1">初审通过</option>
16     <option value="2">复审通过</option>
17     <option value="3">审核不通过</option>
18 </select>
19 '''
另一种下拉框的编写形式:
20 driver.find_element_by_xpath("//*[@id='status']/option[3]").click() #初审通过
21 driver.find_element_by_xpath("//option[@value='1']").click() #初审通过
复制代码

 2、文本域及富文本框

一般用js进行执行,如下示例

文本域输入:document.getElementById('_ComContent1').innerHTML="xxxxx"
富文本框输入:document.getElementById('_ComContent1').contentWindow.document.body.innerHTML="xxxxx"

复制代码
1 文本域的输入:
2 js = "document.getElementById('_ComContent1').innerHTML='在超市卖吗'"
3 element = dr.find_element_by_xpath(".//*[@id='_ComContent1']")
4 dr.execute_script(js,element)
5 
6 富文本框的输入:
7 js = "document.getElementById('_ComContent1').contentWindow.document.body.innerHTML='在超市卖吗'"
8 element = dr.find_element_by_xpath(".//*[@id='_ComContent1']")
9 dr.execute_script(js,element)
复制代码

 3、鼠标操作

复制代码
from selenium.webdriver.common.action_chains import ActionChains 导入控制鼠标事件的方法
1、#鼠标悬停 mm = driver.find_element_by_link_text("设置") ActionChains(driver).move_to_element(mm).perform()
#页面显示并可点击的都可以尝试用超级链接
driver.find_element_by_link_text("搜索设置").click()
2、#鼠标右击
right =driver.find_element_by_xpath("xx")
ActionChains(driver).context_click(right).perform()
3、#鼠标双击
double =driver.find_element_by_xpath("xxx")
ActionChains(driver).double_click(double).perform()
4、#鼠标拖放
#定位元素的原位置
element = driver.find_element_by_name("xxx")
#定位元素要移动到的目标位置
target = driver.find_element_by_name("xxx")
#执行元素的移动操作
ActionChains(driver).drag_and_drop(element, target).perform()
5、#鼠标左键
left=driver.find_element_by_xpath("xxx")
ActionChains(driver).click_and_hold(left).perform()
复制代码

4、一组元素的定位

1 #一组元素的定位
2 driver.find_element_by_link_text("复选框").click()
3 inputs = driver.find_elements_by_tag_name("input")
4 for input in inputs:
5     if  input.get_attribute("type") =="checkbox":      #避免定位的不唯一性
6         input.click()

5、弹窗

alert弹窗
1 driver.find_element_by_id("alert").click()  #定位并点击
2 time.sleep(5)
3 alert  = driver.switch_to_alert()           #切换到弹窗上
4 print(alert.text)                           #打印弹窗信息
5 alert.accept()                              #确定
6 #alert.dismiss()                            #取消
comfrim确认框
复制代码
1 driver.find_element_by_id("confirm").click() #定位并点击
2 3 comfirm = driver.switch_to_alert()           #切换到弹窗上
4 print(comfirm.text)                          #打印弹窗信息
5 comfirm.accept()                             #确认
6 # comfirm.dismiss()                          #取消
7 
8 # driver.switch_to_alert().accept()    #直接点击确定
复制代码
prompt弹窗
1 driver.find_element_by_id("prompt").click()  #定位并点击弹出弹窗
2 prompt = driver.switch_to_alert()            #切换并定位到弹窗
3 print(prompt.text)                           #打印弹窗上的信息
4 prompt.send_keys("我爱你你可知道")             #输入内容
5 prompt.accept()                              #确认
6 # prompt.dismiss()                           #取消

6、多窗口处理

复制代码
 1 curr_handle = driver.current_window_handle     #获得当前句柄
 2 print("curr_handle=",curr_handle)              #打印当前句柄
 3 time.sleep(3)
 4 driver.find_element_by_link_text("python自动化测试").click()
 5 all_handle = driver.window_handles             #获取所有的句柄
 6 for i in all_handle:
 7     if i != curr_handle:                       #如果不等于之前定义的句柄
 8         driver.switch_to_window(i)             #切换到另一个句柄
 9         time.sleep(2)
10         curr_handle1 = driver.current_window_handle
11         print("curr_handle1=",curr_handle1)
12         print(driver.title)                    #打印title
13         driver.quit()
复制代码

7、JS

复制代码
 1 #先定义两个滑动页面的方法并定义js语句,执行直接调用即可
 2 def scroll_top():
 3     if driver.name == "chrome":
 4         js = "var q=document.body.scrollTop=0"
 5     else:
 6         js = "var q=document.documentElement.scrollTop=0"
 7     return driver.execute_script(js)
 8 
 9 def scroll_foot():
10     if driver.name == "chrome":
11         js = "var q=document.body.scrollTop=10000"
12     else:
13         js = "var q=document.documentElement.scrollTop=10000"
14     return driver.execute_script(js)
15 
16 scroll_foot()   #调用滑到页底
复制代码
1 #更改属性,隐藏形式改为文本形式
2 driver.execute_script("document.getElementById('em').type='text';")
3 #执行一个弹窗
4 driver.execute_script("alert('显示出来啦!')")

8、frame

复制代码
 1 第一种方式是switch_to_frame
 2 driver.find_element_by_link_text("frame1").click()
 3 driver.switch_to_frame("frame2")         #通过id定位
 4 # driver.switch_to_frame("myframe")      #通过name定位
 5 driver.find_element_by_link_text("我就是我不一样的烟火").click() #我为自己代言为frame1的超文本链接
 6 
 7 第二种方式是switch_to.frame
 8 driver.switch_to.frame("iframe2")    #切到frame中
 9 driver.switch_to.parent_frame()     #从子frame切回到父frame
10 driver.switch_to.default_content()  #从frame中切回主文档
复制代码

9、文件上传 

1 #定位上传按钮,添加本地文件
2 driver.find_element_by_name("file").send_keys('D:/selenium_use_case/upload_file.txt')

10、文件下载

复制代码
 1 import os
 2 from selenium import webdriver
 3 
 4 fp = webdriver.FirefoxProfile()
 5 fp.set_preference("browser.download.folderList",2)
 6 fp.set_preference("browser.download.manager.showWhenStarting",False)
 7 fp.set_preference("browser.download.dir", os.getcwd())
 8 fp.set_preference("browser.helperApps.neverAsk.saveToDisk",
 9 "application/octet-stream")
10 
11 browser = webdriver.Firefox(firefox_profile=fp)
12 browser.get("http://pypi.python.org/pypi/selenium")
13 browser.find_element_by_partial_link_text("selenium-2").click()
14 
15 注释:
16 browser.download.dir 用于指定所下载文件的目录。
17 os.getcwd() 该函数不需要传递参数,用于返回当前的目录。
18 application/octet-stream 为内容的类型。
复制代码

免责声明:文章转载自《Selenium示例集锦--常见元素识别方法、下拉框、文本域及富文本框、鼠标操作、一组元素定位、弹窗、多窗口处理、JS、frame、文件上传和下载》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇串口发送模块——1字节数据发送linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

selenium的关于选择框的定位

# coding:utf-8from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.webdriver.support.select import Selectimport timedriver...

(包含项目)selenium操作对象的text方法和智能等待时间

基础知识 1  js:JavaScript缩写     json:JavaScript的一种数据格式 2  浏览器的原理:把 html+css+js 下载到本地然后再进行渲染。即看到网页这个过程,实际上是浏览器把代码下载下来,然后浏览器来解释这个代码,变成界面的过程。 3  查看网页源代码:就是别人服务器发送到浏览器的原封不动的代码。这个代码没有被浏览器...

wpf中遍历界面控件的方法

/// <summary>/// 遍历界面中的所有控件/// </summary>/// <param name="uiControls"></param>private void SetNotEditable(UIElementCollection uiControls){foreach (UIElemen...

python selenium 编码问题

#coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.baidu.com") # 返回百度页面底部备案信息 text = driver.find_element_by_id("cp").text print(tex...

Python Selenium Webdriver常用方法总结

Python Selenium Webdriver常用方法总结 常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: maximize_window() 设置窗口参数:set_window_size(600,800) 后退到前一页: back() 前进到后一页: forwar...

浅谈js的几种模式(三)

  接着前面两篇,终于到了第三篇了,天真冷。   组合使用构造函数模式和原型模式   前面讲到了js中的原型模式,是为了解决不共享的问题,然而也因为原型模式的共享性带来了一些问题。原型中所有的属性,对它的实例都是共享的,但是有时我们希望每个实例中能有自己私有的属性,那么此时我们就要组合使用构造函数模式和原型模式。例:           function...