Selenium + Python 自动化测试05(特殊元素定位方法)

        上一篇我们讲述了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)",执行后结果如下图:

本篇就介绍到这里,下一篇继续介绍复杂一些的操作方法。

每天进步一点点!

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立黄昏粥可温

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值