Python+Selenium实现网站滑块拖动操作

2024-01-03 15:16:53

实现效果

示例代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

import time

from selenium import webdriver

from selenium.webdriver import ActionChains

from selenium.webdriver.chrome.service import Service

from selenium.webdriver.common.by import By

service = Service(r"D:\software\chromedriver.exe")

driver = webdriver.Chrome(service=service)

# 控制浏览器访问url地址

driver.get("https://www.taobao.com/")

# 隐式等待

driver.implicitly_wait(1)

account = 'account'? # 账号

password = 'abc123'? # 密码

# 找到“登录”位置

driver.find_element(by=By.CSS_SELECTOR, value="div.member-ft > div > a.btn-login").click()

driver.maximize_window()

driver.implicitly_wait(1)

# 切换页面 获取当前页面handle 获取所有页面的handle 列表的后面

driver.switch_to.window(driver.window_handles[1])

# 找到“账号名”输入框

el_account = driver.find_element(by=By.CSS_SELECTOR, value='#fm-login-id')

print(el_account.text)

driver.implicitly_wait(1)

# 点击账号输入框

el_account.click()

# 输入账号

el_account.send_keys(account)

driver.implicitly_wait(1)

# 找到“密码”输入框

el_password = driver.find_element(by=By.XPATH, value='//*[@id="fm-login-password"]')

# print(el_password.text)

# print(el_password.location)

# 点击密码输入框

el_password.click()

# 输入密码

el_password.send_keys(password)

driver.implicitly_wait(2)

# 找到“登录”按钮,并点击

el_login_btn = driver.find_element(by=By.XPATH, value='//*[@id="login-form"]/div[4]/button')

el_login_btn.click()

# print(el_login_btn.location)

driver.implicitly_wait(1)

# 切换frame

driver.switch_to.frame('baxia-dialog-content')

# 找到滑块,获取宽高

el1 = driver.find_element(by=By.XPATH, value='//*[@id="nc_1_n1z"]')

print(el1.size['width'])

print(el1.size['height'])

# 找到拖动区域,获得宽高

el2 = driver.find_element(by=By.XPATH, value='//*[@id="nc_1__scale_text"]')

print(el2.size['width'])

print(el2.size['height'])

driver.implicitly_wait(2)

# 创建一个事件链对象

chains = ActionChains(driver)

# 实现滑块拖动

chains.drag_and_drop_by_offset(el1, el2.size['width'], -el2.size['height'])

# 事件提交

chains.perform()

time.sleep(5)

# 关闭浏览器

driver.close()

driver.quit()

方法补充

在做登录测试时,有些站点会有“滑块”验证功能,自动化测试可用对滑块拖拉操作的方式处理:

需求:携程注册“滑块”操作

思路:

按住左边滑块

拖放到最右边

用键盘事件中:drag_and_drop_by_offset

代码为:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#大牛测试:轻轻松松自动化

#QQ:2574674466

#专注自动化测试技术传播

from selenium import webdriver

import time

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.action_chains import ActionChains

??

driver = webdriver.Chrome()

driver.get("https://passport.ctrip.com/user/reg/home")

driver.find_element_by_css_selector("#agr_pop > div.pop_footer > a.reg_btn.reg_agree").click()

??

sour = driver.find_element_by_css_selector("#slideCode > div.cpt-drop-box > div.cpt-drop-btn")

print(sour.size['width'])

print(sour.size['height'])

??

ele =driver.find_element_by_css_selector("#slideCode > div.cpt-drop-box > div.cpt-bg-bar")

print(ele.size['width'])

print(ele.size['height'])

time.sleep(2)

ActionChains(driver).drag_and_drop_by_offset(sour,ele.size["width"],-ele.size["heigh

?现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!?希望能帮助到你!【100%无套路免费领取】

文章来源:https://blog.csdn.net/weixin_57794111/article/details/135362188
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。