python selenium模拟点击问题怎么解决
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"python selenium模拟点击问题怎么解决",在日常操作中,相信很多人在python selenium模拟点击问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
千家信息网最后更新 2025年01月18日python selenium模拟点击问题怎么解决
这篇文章主要介绍"python selenium模拟点击问题怎么解决",在日常操作中,相信很多人在python selenium模拟点击问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"python selenium模拟点击问题怎么解决"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1、安装谷歌浏览器
#下载包wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb#安装包,用deb方式安装sudo dpkg -i --force-depends google-chrome-stable_current_amd64.deb#######################分割################################若出现Packet xxx is not installed,代表依赖出现问题执行以下命令apt-get install -f#重新执行一遍sudo dpkg -i --force-depends google-chrome-stable_current_amd64.deb#######################分割###############################为了让其能够无界面运行sudo apt-get install xvfb
2、安装浏览器驱动
#首先获取chromedriver的最新版本信息LATEST=$(wget -q -O - http://chromedriver.storage.googleapis.com/LATEST_RELEASE)#下载 wget http://chromedriver.storage.googleapis.com/$LATEST/chromedriver_linux64.zip #解压unzip chromedriver_linux64.zip #如果没有安装unzip就运行 apt install unzip#权限配置chmod +x chromedriver #移动到bin目录下sudo mv chromedriver /usr/bin/
3、安装selenium
#看自己系统是不是pip3,-i表示用什么源下载pip3 install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
4、简单测试
首先创建test.py文件,之后执行python3 test.py
,查看效果
#coding=utf-8from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionschrome_opt = Options() # 创建参数设置对象.chrome_opt.add_argument('--headless') # 无界面化.chrome_opt.add_argument('--disable-gpu') # 配合上面的无界面化.chrome_opt.add_argument('--window-size=1366,768') # 设置窗口大小, 窗口大小会有影响.chrome_opt.add_argument("--no-sandbox") #使用沙盒模式运行# 创建Chrome对象并传入设置信息.browser = webdriver.Chrome(chrome_options=chrome_opt)url = "https://www.baidu.com/"browser.get(url)print(browser.page_source)browser.quit()
5、打卡程序
这里我先用浏览器插件的Selenium先点击好导出python文件进行修改。程序需要创建data.csv
文件,并在其中写入账号密码
# Generated by Selenium IDEimport sysimport timefrom selenium import webdriverfrom selenium.webdriver.common.by import By# 读取数据函数userList = []def readData(): with open("data.csv","r") as f: for lines in f.readlines(): data = lines.strip().split(",") userList.append(data)# 全局函数def printLog(info): print('{0} {1}'.format(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),info))# 打卡类class Test: # 初始化浏览器 def __init__(self): # 添加 Chrome 相关配置 options = webdriver.ChromeOptions() # 指定设备名称即可 options.add_experimental_option('mobileEmulation', {'deviceName': 'iPhone X'}) options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') # options.add_argument('--headless') self.driver = webdriver.Chrome(chrome_options=options) # => 打开浏览器时加入配置 printLog("浏览器初始化完成") # 正式打卡 def signIn(self,username,password): printLog("正在打开网页") self.driver.get("http://stu.zstu.edu.cn/webroot/decision/url/mobile?origin=53fd9573-139e-4e3b-9357-4d791849ad58#/login") # 睡眠控制速度 # 刷新页面 self.driver.refresh() time.sleep(3) self.driver.set_window_size(800, 824) self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div/div/div/div/div[2]/div[2]/div[1]/div/input").click() self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div/div/div/div/div[2]/div[2]/div[1]/div/input").send_keys(username) self.driver.find_element(By.XPATH, "//input[@type=\'password\']").click() self.driver.find_element(By.XPATH, "//input[@type=\'password\']").send_keys(password) time.sleep(3) self.driver.find_element(By.CSS_SELECTOR,".r-1loqt21:nth-child(4)").click() time.sleep(4) printLog("登录成功") # 寻找打卡功能模块 self.driver.find_element(By.CSS_SELECTOR,".r-1loqt21:nth-child(2)").click() time.sleep(2) printLog("开始打卡") self.driver.find_element(By.CSS_SELECTOR, "#col_3_row_6 .css-901oao").click() time.sleep(1) self.driver.find_element(By.XPATH, "//div[34]/div/div/div/div").click() time.sleep(1) self.driver.find_element(By.CSS_SELECTOR, "#col_4_row_6 > div").click() time.sleep(1) self.driver.find_element(By.XPATH, "//div[2]/div/div[2]/div/div/div/div/div").click() time.sleep(1) self.driver.find_element(By.CSS_SELECTOR, "#col_5_row_6 > div").click() time.sleep(1) self.driver.find_element(By.XPATH, "//div[2]/div/div[6]/div/div/div").click() time.sleep(1) self.driver.find_element(By.CSS_SELECTOR, "#col_3_row_7 .css-1cwyjr8").click() self.driver.find_element(By.CSS_SELECTOR, "#col_3_row_7 .css-1cwyjr8").send_keys("浙江理工大学") printLog("打卡进行中") #选项,不知道为什么css定位不能用 self.driver.find_element(By.XPATH, "//div[10]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[12]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[13]/div/div/div/div/div/div/div[2]").click() self.driver.find_element(By.XPATH, "//div[17]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[18]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[19]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[20]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[21]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[23]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[25]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[26]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[28]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[30]/div/div/div/div/div[2]/div/div").click() time.sleep(1) #提交 self.driver.find_element(By.CSS_SELECTOR, "#col_1_row_39").click() time.sleep(10) printLog("本次打卡成功") def quit(self): self.driver.quit() printLog("浏览器退出")if __name__ == '__main__': test = Test() readData() for i in range(len(userList)): try: test.signIn(userList[i][0],userList[i][1]) except: printLog("打卡成功或者系统bug,正在进行下一个") continue test.quit() printLog("今日打卡任务完成") sys.exit()
6、linux设置定时任务
#上传代码后,设置定时crontab -e #打开后添加以下记录,代表每天3点执行0 3 * * * /usr/bin/python3 /home/shawn/ezl/sign.py > /home/shawn/ezl/elog.log 2>&1#重启systemctl restart cron.service
7、其他
上面部分为研究生打开,下面为本科生
# Generated by Selenium IDEimport sysimport timefrom selenium import webdriverfrom selenium.webdriver.common.by import By# 读取数据函数userList = []def readData(): with open("data.csv","r") as f: for lines in f.readlines(): data = lines.strip().split(",") userList.append(data)# 全局函数def printLog(info): print('{0} {1}'.format(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),info))# 打卡类class Test: # 初始化浏览器 def __init__(self): # 添加 Chrome 相关配置 options = webdriver.ChromeOptions() # 指定设备名称即可 options.add_experimental_option('mobileEmulation', {'deviceName': 'iPhone X'}) options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--headless') self.driver = webdriver.Chrome(chrome_options=options) # => 打开浏览器时加入配置 printLog("浏览器初始化完成") # 正式打卡 def signIn(self,username,password): printLog("正在打开网页") self.driver.get("http://stu.zstu.edu.cn/webroot/decision/url/mobile?origin=53fd9573-139e-4e3b-9357-4d791849ad58#/login") # 睡眠控制速度 # 刷新页面 self.driver.refresh() time.sleep(3) self.driver.set_window_size(800, 824) self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div/div/div/div/div[2]/div[2]/div[1]/div/input").click() self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div/div/div/div/div[2]/div[2]/div[1]/div/input").send_keys(username) self.driver.find_element(By.XPATH, "//input[@type=\'password\']").click() self.driver.find_element(By.XPATH, "//input[@type=\'password\']").send_keys(password) time.sleep(3) self.driver.find_element(By.CSS_SELECTOR,".r-1loqt21:nth-child(4)").click() time.sleep(4) printLog("登录成功") # 寻找打卡功能模块 # self.driver.find_element(By.CSS_SELECTOR,".r-1loqt21:nth-child(2)").click() self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div[1]/div/div/div/div/div/div[1]/div/div/div/div[2]/div/div/div[3]/div/div/div[5]/div/div/div[3]").click() time.sleep(5) printLog("开始打卡") # self.driver.find_element(By.CSS_SELECTOR, "#col_3_row_6 .css-901oao").click() self.driver.find_element(By.XPATH, "//*[@id='col_1_row_11']/span").click() time.sleep(5) self.driver.find_element(By.XPATH, "//div[2]/div/div/div/div/div/div/div/div/div/div/div").click() time.sleep(1) self.driver.find_element(By.XPATH, "//div[34]/div/div/div/div").click() time.sleep(1) self.driver.find_element(By.XPATH, "//div[2]/div/div/div/div/div/div/div/div/div/div[2]/div").click() time.sleep(1) self.driver.find_element(By.XPATH, "//div[2]/div/div[2]/div/div/div/div/div/div").click() time.sleep(1) self.driver.find_element(By.XPATH, "//div[3]/div").click() time.sleep(1) self.driver.find_element(By.XPATH, "//div[6]/div/div/div/div").click() time.sleep(1) self.driver.find_element(By.XPATH, "//input").click() time.sleep(1) self.driver.find_element(By.XPATH, "//input").send_keys("浙江理工大学") time.sleep(1) printLog("打卡进行中") #选项,不知道为什么css定位不能用 self.driver.find_element(By.XPATH, "//div[11]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[13]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[14]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[18]/div/div/div/div/div/div/div[2]").click() self.driver.find_element(By.XPATH, "//div[19]/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[19]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[20]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[21]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[22]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[24]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[26]/div/div/div/div/div/div/div").click() self.driver.find_element(By.XPATH, "//div[27]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[29]/div/div/div/div/div[2]/div/div").click() self.driver.find_element(By.XPATH, "//div[31]/div/div/div/div/div[2]/div/div").click() time.sleep(1) #提交 self.driver.find_element(By.XPATH, "//*[@id='col_0_row_40']/div/div/div/div").click() # self.driver.find_element(By.CSS_SELECTOR, "#col_0_row_40 .r-1loqt21 > .css-1dbjc4n").click() time.sleep(10) printLog("本次打卡成功") def quit(self): self.driver.quit() printLog("浏览器退出")if __name__ == '__main__': test = Test() readData() for i in range(len(userList)): try: test.signIn(userList[i][0],userList[i][1]) except: printLog("打卡成功或者系统bug,正在进行下一个") continue test.quit() printLog("今日打卡任务完成") sys.exit()
到此,关于"python selenium模拟点击问题怎么解决"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
打卡
浏览器
浏览
问题
成功
配置
函数
正在
学习
任务
文件
界面
系统
运行
代表
信息
全局
功能
功能模块
名称
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北京服务器电源购买
web属于网络安全技术吗
网络安全整体设计
管理软件开发怎么选
网络安全职业学院地址
sql数据库哪个老师讲得好
广电u点家庭服务器安装多少钱
保护网络安全的诗歌
英国游戏软件开发专业有哪些
db2数据库分页
高中生对于网络安全的看法
榆次展厅大屏导航软件开发公司
在创建数据库之前
郧西互联网软件开发售后保障
湖北网络技术分类产品介绍
网络安全业务范围
语音标注软件开发
浦东新区网络技术开发诚信服务
cisco中服务器是哪个
黄浦区创新数据库服务价钱
网络技术内涵
上海正规软件开发项目信息
数据库安全防护视频
王者荣耀游戏服务器
云数据库自动驾驶软件
数据库与搜索引擎
戴尔服务器更新管理口
支付宝如何获取健康数据库
网络安全运维职业能力
软件开发绩效工资占比