上一篇我们讲述了webdriver 元素操作方法。我们对常规操作有了一个基本的认识。接着我们详细讲述对特殊元素常见的一些基本操作方法,以便我们可以做很多功能操作的测试。
1、鼠标悬停的操作
1)常用方法
click:模拟鼠标单击操作
click_and _hold:模拟鼠标单击并且按住不放
double_click:鼠标双击
context_click:鼠标右击操作
drag_and_drop:鼠标拖曳
move_to_element:鼠标移动到指定的某个页面元素
perform():将之前一系列的ActionChains 执行
release:释放按下的鼠标
2)实操练习
需要用到的类
from selenium.webdriver.common.action_chains import ActionChains #键盘鼠标操作封装在ActionChains类中
以下以百度为例的参考代码:
driver.get("https://www.baidu.com") #打开百度 driver.maximize_window() time.sleep(1) ''' 鼠标悬停的使用 ''' #找到设置元素位置->悬停->点击高级搜索 set_config=driver.find_element_by_id("s-usersetting-top") #设置的位置 ActionChains(driver).move_to_element(set_config).perform() #模拟鼠标悬停 time.sleep(3) driver.find_element_by_xpath("//*[@id='s-user-setting-menu']/div/a[2]/span").click() #点击高级搜索 time.sleep(3)
可以自动打开“高级搜索 ”
2、select 操作
我们经常遇到下拉框需要选择 ,这时候可以用到selenium用来处理select元素的方法
通过select_by_index 方式来触发,实例 如下:
操作这个网站:https://www.saucedemo.com/
username = "standard_user" password = "secret_sauce" print("登录的用户名是:%s,密码是:%s"%(username,password)) #打开浏览器,并最大化 driver.get("https://www.saucedemo.com/") #打开练手的网站 driver.maximize_window() # 输入用户名, driver.find_element_by_name("user-name").send_keys(username) # by name 定位 # 输入密码 driver.find_element_by_name("password").send_keys(password) # by name 定位 time.sleep(1) # 点击登录按钮 driver.find_element_by_id("login-button").click() # by ID 定位 time.sleep(3) ''' select 的使用,选择下拉框 ''' # 找到下拉框位置 se_location = driver.find_element_by_xpath("//*[@id='header_container']/div[2]/div/span/select") # 通过序号选择1-“Z to A”,索引是从0开始 Select(se_location).select_by_index(1) time.sleep(3)
以上代码实现下图中默认是A to Z改为:Z to A
3、利用JavaScript 操作页面元素
webdriver 对部分浏览器上控件并不是直接支持的,如浏览器右侧滚动条,富文本等。而是通过JavaScript间接操作。webdriver提供了execute_script() 和execute_async_script()两种方法来执行JavaScript代码。
1)基本操作说明
如百度为例:输入JavaScript代码来执行,可以看到下图结果
document.getElementById("kw").value="男人帮"
使用脚本实现:
''' 以百度为例说明JavaScript代码执行 ''' driver.get("https://www.baidu.com") # 打开百度 driver.maximize_window() time.sleep(1) js='document.getElementById("kw").value="男人帮"' driver.execute_script(js) time.sleep(3)
以上代码可以达到和上图搜索一样的效果
2)用JavaScript代码实现对滚动条的操作
"window.scrollTo(100,300)":对应滚动条横向和竖向移动的大小 ''' 以百度为例说明JavaScript代码执行滚动条 ''' driver.get("https://www.baidu.com") # 打开百度 driver.maximize_window() #设置浏览器窗口大小,目的是将滚动条显示出来 driver.set_window_size(700,700) driver.find_element_by_id("kw").send_keys("CSDN") driver.find_element_by_id("su").click() time.sleep(3) #通过js拉动滚动条 js_tiao="window.scrollTo(100,300)" driver.execute_script(js_tiao) time.sleep(5) driver.quit()
另外,使滚动条滑到底部可以用如下JS代码
"window.scrollTo(0,document.body.scrollHeight)",执行后结果如下图:
本篇就介绍到这里,下一篇继续介绍复杂一些的操作方法。
每天进步一点点!
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Selenium + Python 自动化测试05(特殊元素定位方法)
发表评论 取消回复