我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python selenium模拟点击问题解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_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 IDE
import sys
import time
from selenium import webdriver
from 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 IDE
import sys
import time
from selenium import webdriver
from 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模拟点击的文章就介绍到这了,更多相关python 模拟点击内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python selenium模拟点击问题解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python selenium模拟点击问题怎么解决

这篇文章主要介绍“python selenium模拟点击问题怎么解决”,在日常操作中,相信很多人在python selenium模拟点击问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python
2023-06-30

python模块引入问题和解决方案

本文主要介绍了python模块引入问题和解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-09

Android Studio 3.6运行模拟器时Emulator警告问题的解决方案

手贱更新了android studio过后,编译不报错,只要启动模拟器就会报出两行emulator警告,关掉模拟器也会有警告,之前版本用的都好好的,怎么消除警告问题? Emulator: emulator: WARNING: Emulato
2022-06-06

ThinPHP无法加载模块问题的解决方案

ThinPHP无法加载模块可能是因模块未安装、路径不正确、权限错误或PHP配置等原因造成的。解决方法包括检查模块安装、验证模块路径、调整文件权限、检查PHP配置、启用调试、清除缓存、重启服务器、查看日志文件、安装调试包,以及寻求社区支持。
ThinPHP无法加载模块问题的解决方案
2024-04-02

PHP浮点数运算问题分析与解决方案

PHP是一种广泛应用于网站开发的脚本语言,其强大的功能和灵活性使得它成为许多开发者的首选工具。然而,在处理浮点数运算时,PHP也存在一些问题,特别是在涉及到精度和精确性要求较高的情况下。本文将对PHP浮点数运算问题进行分析,并提出一些解决方
PHP浮点数运算问题分析与解决方案
2024-02-27

雷电模拟器桥接问题解决方法及ADB更改网络代理问题解决方法

一、更改雷电模拟器网络设置 1、选择“开启” 2、桥接网卡的选择:打开控制面板-网络连接-更改适配器进行查看 3、点击“点击安装”安装驱动 4、配置静态IP 选择一个同网段的静态IP地址,我这边选择:192.168.8.11 点击“保
2023-08-16

Python中的并行编程问题及解决方案

Python中的并行编程问题及解决方案,需要具体代码示例随着多核处理器的普及和计算任务的复杂化,以及数据处理方面的需求增加,利用并行编程可以有效地提高程序的执行效率。Python作为一种高级编程语言,具有简洁、易读、易写的特点,也提供了一些
2023-10-22

Python logging 模块:解决你最棘手的知识点问题

Python logging 模块:破解你的编程难题
Python logging 模块:解决你最棘手的知识点问题
2024-03-06

缓存穿透、缓存击穿、缓存雪崩、热点数据失效问题的解决方案

在我们的平常项目中多多少少会用到缓存,因为一些数据没必要每次查询都跑到数据库中查询。 1、缓存穿透         请求去查询一条不存在的数据,也就是缓存和数据库都查询不到这条数据,但每次请求都会打到数据库上去。         这种查询不存在数据的现象我们
缓存穿透、缓存击穿、缓存雪崩、热点数据失效问题的解决方案
2021-10-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录