網站首頁 編程語言 正文
實現效果
示例代碼
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
代碼為:
#大牛測試:輕輕松松自動化
#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["height"]).perform()
原文鏈接:https://blog.csdn.net/username666/article/details/126589187
相關推薦
- 2022-10-29 python中正則表達式findall的用法實例_python
- 2022-10-29 關于torch.load加載預訓練模型時 造成的 臨時分配的顯存 不釋放
- 2022-04-21 R語言繪制數據可視化Dumbbell?plot啞鈴圖_R語言
- 2022-10-22 Python中的list.sort()方法和函數sorted(list)_python
- 2022-09-19 C++中的explicit關鍵字詳解_C 語言
- 2022-09-06 React父組件調用子組件中的方法實例詳解_React
- 2022-11-14 python?pycharm中使用opencv時沒有代碼自動補全提示的解決方案_python
- 2022-04-10 C#實現計算器功能(winform版)_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支