Selenium

selenium

核心:直接模拟用户操作

安装浏览器,驱动器ChromeDriver,配置环境变量

驱动器
在chrome输入框中输入:chrome://version/
我的是92,就去网址里找92的driver

配置环境变量(可选)

安装selenium

以tsinghua的镜像安装:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium

操作

打开关闭浏览器

browser = selenium.webdriver.Chrome("谷歌驱动的地址") # 打开谷歌浏览器
browser = selenium.webdriver.PhantomJS('C:\Users\e\PycharmProjects\untitled\venv\Scripts\phantomjs') # 打开PJS浏览器
browser.close() # 关闭当前标签页,如果只有一个则关闭浏览器
browser.quit()  # 彻底关闭,包括后台进程

打开网址

browser.get("https://www.yuque.com/qiguihongtong/kb/bg93pz/edit")

※寻找节点

node = browser.find_element_by_xpath("//span[@style = 'user-select: auto;']") # 寻找单节点
nodes = browser.find_elements_by_xpath("//span[@style = 'user-select: auto;']") # 寻找多节点

推荐插件:xpath helper

使用:Hit Ctrl-Shift-X (or Command-Shift-X on OS X), or click the XPath Helper button in the toolbar, to open the XPath Helper console.

输入信息

input = browser.find_element_by_xpath('//input')
input.send_keys('青')

点击按钮

button = browser.find_element_by_xpath('')
button.click() # 不推荐,不稳定,会报错
browser.execute_script("arguments[0].click();", button)

模拟键鼠

selenium方式
ActionChains(driver).key_down(Keys.CONTROL).send_keys('f').perform()#注意key_down不能用于普通的abcd
win32方式
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x56, 0, 0, 0)
win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)

更多操作

详见https://www.cnblogs.com/songzhixue/p/11270593.html 非常详细

实例

示例一:腾讯文档自动填写

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains



url = "https://docs.qq.com/sheet/DS3FPbHBTT3FNRUJx?groupUin=CTdDUK7DtI2KjO6hZkPIMg%253D%253D"
browser = webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
browser.get(url)
browser.implicitly_wait(10)#最多等它十秒,刷新出来了就继续,不然就结束


#登录,用快速登入的功能,前提,已经电脑qq登入了
# time.sleep(1)
browser.find_element_by_id('header-login-btn').click()#点击登入按钮
time.sleep(1.5)
browser.switch_to.frame(browser.find_element_by_id('login_frame'))
browser.find_element_by_class_name('img_out_focus').click()
browser.switch_to.parent_frame()
time.sleep(2)
browser.find_element_by_xpath('//*[@id="canvasContainer"]/div[1]/div[2]').click()
time.sleep(10)

# 模拟c+f找到自己所在行列,进行填写
ActionChains(browser).key_down(Keys.CONTROL).send_keys('f').perform()

browser.find_element_by_id('search-panel-input').send_keys("yourname")#输入自己的名字
time.sleep(1)
browser.find_element_by_class_name('dui-modal-close').click()# 关闭搜索窗口




#操作节点
info=[]#写自己的信息在这里
line = len(info)
for i in range(0,line):
    cell = browser.find_element_by_id('alloy-simple-text-editor')
    cell.click()
    cell.send_keys(Keys.CONTROL+'a')
    cell.send_keys(Keys.DELETE)
    cell.send_keys(info[i])
    cell.send_keys(Keys.TAB)
    time.sleep(0.5)
#点击保存
browser.find_element_by_xpath('//*[@id="canvasContainer"]/div[1]/div[2]').click()
ActionChains(browser).key_down(Keys.CONTROL).key_down('s').perform()

#关闭浏览器
browser.quit()



示例二:微哨自动填写

import time
import pyperclip
import win32api
import  win32con
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains



url = "http://web.weishao.com.cn/login"
browser = webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
browser.get(url)
browser.implicitly_wait(10)#最多等它十秒,刷新出来了就继续,不然就结束

#定义用户信息
user=""
pwd=""
pyperclip.copy("学校名")



# 登录功能
school = browser.find_element_by_class_name("Select-placeholder")
school.click()
time.sleep(1)
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x56, 0, 0, 0)
win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x0D, 0, 0, 0)
win32api.keybd_event(0x0D, 0, win32con.KEYEVENTF_KEYUP, 0)
username = browser.find_element_by_id("username")
password = browser.find_element_by_id("password")
username.send_keys(user)
password.send_keys(pwd)
browser.find_element_by_class_name("ws-btn-primary-exlarge").click()
time.sleep(2)


# 进入打卡页面
browser.find_elements_by_class_name("_2BGxvoElgOLUfVlc8LDiM3")[2].click()
time.sleep(1)
browser.find_element_by_class_name("_1IfY7BzDNqbMrOzt5CMCq2").click()
browser.find_element_by_class_name("ws-btn-primary").click()
time.sleep(10)



#跳到最终页面
handles = browser.window_handles
browser.switch_to_window(handles[1])
browser.find_element_by_class_name("content").click()


#打卡
#undo

# 关闭浏览器
browser.find_element_by_tag_name("li")

参考资料

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值