本文共 3966 字,大约阅读时间需要 13 分钟。
环境安装: pip install selenium
下载一个浏览器的驱动程序(谷歌浏览器)
1)将下载下来的驱动程序解压,将chromedriver.exe复制到我们的项目模块中,即可使用。
2)或者将chromedriver.exe复制到谷歌浏览器的安装目录下,然后将路径添加到我的电脑的环境变量Path中。详见
browser = webdriver.Chrome(executable_path='./chromedriver')
实例化一个浏览器对象
编写基于浏览器自动化的操作代码
from selenium import webdriverfrom time import sleepbrowser = webdriver.Chrome(executable_path='./chromedriver')browser.get('https://www.taobao.com/')# 标签定位search_input = browser.find_element_by_id('q')# 标签交互search_input.send_keys('Iphone')# 执行一组 js程序# 根据电脑的高度让滚动条滚动一平的高度js = 'window.scrollTo(0, document.body.scrollHeight)'browser.execute_script(js)sleep(2)# 点击搜索按钮search_btn = browser.find_element_by_css_selector('.btn-search')search_btn.click()browser.get('https://www.baidu.com/')sleep(2)# 回退browser.back()sleep(2)# 前进browser.forward()sleep(5)browser.quit()
from selenium.webdriver import ActionChains
action = ActionChains(browser)
click_and_hold()
点击长按指定的标签move_by_offset(x, y)
perform()
action.release()
from selenium import webdriverfrom time import sleepfrom selenium.webdriver import ActionChains # 导入动作链对应的类browser = webdriver.Chrome(executable_path='./chromedriver')browser.get('https://www.runoob.com/try/try-cdnjs.php?filename=tryhtml5_draganddrop')# 如果定位的标签是存在于 iframe标签之中的则必须通过如下操作再进行标签定位browser.switch_to.frame('iframeResult') # 切换浏览器标签定位的作用域img = browser.find_element_by_id('drag1')print(img)# 动作链 (拖动)action = ActionChains(browser)# 点击长按指定的标签action.click_and_hold(img)for i in range(5): # move_by_offset(x:水平, y:垂直) 做移动偏移,perform()立即执行动作链操作 action.move_by_offset(0, 20).perform() sleep(0.3)# 释放动作链action.release()sleep(5)browser.quit()
click_and_hold(on_element=None) ——点击鼠标左键,不松开
context_click(on_element=None) ——点击鼠标右键 double_click(on_element=None) ——双击鼠标左键 drag_and_drop(source, target) ——拖拽到某个元素然后松开 drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开 key_down(value, element=None) ——按下某个键盘上的键 key_up(value, element=None) ——松开某个键 move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标 move_to_element(to_element) ——鼠标移动到某个元素 move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置 perform() ——执行链中的所有动作 release(on_element=None) ——在某个元素位置松开鼠标左键 send_keys(*keys_to_send) ——发送某个键到当前焦点的元素 send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素
from selenium import webdriverfrom time import sleepfrom selenium.webdriver import ActionChains # 导入动作链对应的类browser = webdriver.Chrome(executable_path='./chromedriver')browser.get('https://www.17sucai.com/preview/1673365/2019-05-24/hk/index.html')div_btn = browser.find_element_by_id('btn')div = browser.find_element_by_id('slide_xbox')print(div_btn)# 动作链 (拖动)action = ActionChains(browser)# 点击长按指定的标签action.click_and_hold(div_btn)# drag_and_drop_by_offset(source, x:水平, y:垂直) 拖拽到某个坐标然后松开,perform()立即执行动作链操作action.drag_and_drop_by_offset(div, 799, 0).perform()# 释放动作链action.release()sleep(5)browser.quit()
from selenium import webdriverfrom time import sleepfrom selenium.webdriver import ActionChains # 导入动作链对应的类browser = webdriver.Chrome(executable_path='./chromedriver')browser.get('https://qzone.qq.com/')# 如果定位的标签是存在于 iframe标签之中的则必须通过如下操作再进行标签定位browser.switch_to.frame('login_frame') # 切换浏览器标签定位的作用域# 点击账号密码登录switcher_plogin = browser.find_element_by_id('switcher_plogin')switcher_plogin.click()# 定位到用户名和密码输入框username_input = browser.find_element_by_id('u')password_input = browser.find_element_by_id('p')login_button = browser.find_element_by_id('login_button')username_input.send_keys('账号')password_input.send_keys('密码')login_button.click()sleep(3)browser.quit()
下一篇 12306模拟登录 :
转载地址:http://xkiwi.baihongyu.com/