python+selenium自动化登录dnf11周年活动界面领取奖励登录部分采坑总结[1]
背景:
Dnf的周年庆活动之一,游戏在6月22日 06:00~6月23日 06:00之间登陆过游戏后可以于6月25日 16:00~7月04日 06:00领取奖励
目标:连续四天自动运行脚本,自动领取所有奖励,每天领取一个
进度:当前未知登陆后是否还有选择区服弹窗,故当前仅处理到成功点击为止
思路:
python+selenium自动化点击,程序定时运行
实现方法:timer_exerice.py编写死循环定时器,30s判断一次是否到达相应时间,若到达时间,开始执行selenium_exerice.py,自动打开网页,登录账号,点击领取按钮
代码:
编写定时器。每日调整next_time即可
调用os模块是为了执行selenium_exerice.py,这方法比较简单粗暴
import datetime
import os
import time
def time_timer(now_time):
next_time = datetime.datetime.strptime("2019-6-21 15:17:00", "%Y-%m-%d %H:%M:%S")
timer_start_time = (next_time - now_time).total_seconds()
return timer_start_time def time_main():
while True:
now_time = datetime.datetime.now()
d = time_timer(now_time)
if d > 0:
print("距离目标时间还有%s秒" % (int(d)))
time.sleep(30)
else:
print("开始执行")
os.system(r"python D:\\Pyexerice\\selenium_exerice2.py")
break if __name__ == "__main__":
time_main()
编写自动登录点击代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import unittest,time
class Dnf_login(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
self.driver.implicitly_wait(30)
self.base_url = "https://dnf.qq.com/cp/a20190618login/?e_code=479698&idataid=266454"
self.verificationErrors = []
self.accept_next_alert = True
print("正在访问Dnf11周年庆活动界面") def test_dnf_login(self):
driver=self.driver
driver.maximize_window()
driver.get(self.base_url)
login_Hierarchy1=driver.find_element_by_id("unlogin")
login_Hierarchy2=login_Hierarchy1.find_element_by_id("btn_qqlogin")
driver.execute_script("arguments[0].click();",login_Hierarchy2)
time.sleep(5)
#授权登录界面点击账号密码登录
driver.switch_to.frame("loginIframe")
driver.find_element_by_id("switcher_plogin").click()
driver.find_element_by_id("u").clear()
driver.find_element_by_id("u").send_keys("username")
driver.find_element_by_id("p").clear()
driver.find_element_by_id("p").send_keys("password")
driver.find_element_by_id("p").send_keys(Keys.ENTER)
print("登录成功")
time.sleep(5)
# 点击领取按钮
# 按层查找按钮所在位置,处理点击
draw_Hierarchy1 = driver.find_element_by_class_name("dan-con")
draw_Hierarchy2 = draw_Hierarchy1.find_element_by_id("lotteryBtn1")
driver.execute_script("arguments[0].click();", draw_Hierarchy2)
print("点击成功")
time.sleep(5) def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
print("已关闭游览器") if __name__ == "__main__":
unittest.main()
采坑过程
1.Selenium中单击Element:ElementClickInterceptedException报错

如上图所示,最一开始的时候我的写法是
login_Hierarchy1=driver.find_element_by_id("unlogin")
login_Hierarchy2=login_Hierarchy1.find_element_by_id("btn_qqlogin").click()
然后报错信息如标题,不会处理找百度,参考
https://blog.csdn.net/qq_41424519/article/details/87906207
修改代码后可以成功点击登录按钮
2.登录授权界面switch_to.frame()
和1一样,一开始直接定位报错,百度查资料发现登录按钮在iframe上,

所以switch_to.frame()切换,定位成功
因为还没开放领取,不知道后面是不是还有填写区服的界面,所以暂时没有处理后续,仅到执行完点击后关闭界面,执行结果如下

python+selenium自动化登录dnf11周年活动界面领取奖励登录部分采坑总结[1]的更多相关文章
- Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。
Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息. 本文链接:https://blog.csdn.net/qq_38161040/art ...
- python selenium自动化点击页面链接测试
python selenium自动化点击页面链接测试 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回 ...
- Python+Selenium自动化总结
Python+Selenium自动化总结 1.环境搭建 1.1.安装selenium模块文件 pip install selenium 1.2.安装ChromeDriver驱动 [1]下载安装Chro ...
- Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法
Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法 之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...
- Python+Selenium自动化-模拟键盘操作
Python+Selenium自动化-模拟键盘操作 0.导入键盘类Keys() selenium中的Keys()类提供了大部分的键盘操作方法:通过send_keys()方法来模拟键盘上的按键. # ...
- Python+Selenium自动化-设置等待三种等待方法
Python+Selenium自动化-设置等待三种等待方法 如果遇到使用ajax加载的网页,页面元素可能不是同时加载出来的,这个时候,就需要我们通过设置一个等待条件,等待页面元素加载完成,避免出现 ...
- Python+Selenium自动化-清空输入框、输入内容、点击按钮
Python+Selenium自动化-清空输入框.输入内容.点击按钮 1.输入内容 send_keys('valve'):输入内容valve #定位输入框 input_box = browser. ...
- Python+Selenium自动化-设置浏览器大小、刷新页面、前进和后退
Python+Selenium自动化-设置浏览器大小.刷新页面.前进和后退 1.设置浏览器大小 maximize_window():设置浏览器大小为全屏 set_window_size(500,5 ...
- Python+Selenium自动化-获取页面信息
Python+Selenium自动化-获取页面信息 1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import t ...
随机推荐
- Python 函数的参数传递
C/C++中,传递参数的类型是可以指定的.一般来说,传递参数可以分为两种:值传递和引用传递.对于值传递,参数传递的过程中进行了复制操作,也就是说,在函数中对参数的任何改动都不会影响到传入的变量:对于引 ...
- 010-- 开发脚本自动部署nginx_web和nfs及监控内存
1.编写脚本自动部署反向代理.web.nfs: #!/bin/bash #检测安装nginx function detection_nginx(){ if [ -f /etc/nginx/nginx. ...
- E20180402-hm
cascade n. 串联; 倾泻; 小瀑布,瀑布状物; restrict vt. 限制,限定; 约束,束缚; strict adj. 精确的; 绝对的; 严格的,严谨的; [植] 笔直的; re ...
- MongoDb Samus c# Find函数的使用说明
长活短说, 网上有一些是不对的 比如 Op.GreaterThan(...).LessThan(..) 不能这么用来表示 ( , ) 而应该这么用: var doc = new Document( a ...
- HTML5中div,article,section的区别
最近正在学习html5,刚接触html5,感觉有点不适应,因为有一些标签改变了,特别是div, section article这三个标签,查了一些资料,也试着用html5和css3布局网页,稍微有点头 ...
- 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法
<对“XXX::Invoke”类型的已垃圾回收委托进行了回调.这可能会导致应用程序崩溃.损坏和数据丢失.向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们& ...
- 找不到javax.servlet.Filter的类文件
在这里我是用IDEA来开发的,Tomcat用的maven插件 原因:没有相应在jar包 解决:导入相应在jar的依赖,在pom文件中添加 <dependency> <groupId& ...
- Hexo瞎折腾系列(5) - 使用hexo-neat插件压缩页面静态资源
为什么要压缩页面静态资源 对于个人博客来说,优化页面的访问速度是很有必要的,如果打开你的个人站点,加载个首页就要十几秒,页面长时间处于空白状态,想必没什么人能够忍受得了吧.我个人觉得,如果能把页面的加 ...
- Python基础知识(3)
1:字符串类型转换 num = 100 num2 = " #num是整数类型的值,num2是字符串类型的值,如果把他们两个的类型转换下呢? int(num2) #int 整形成整数 str( ...
- Qt样式表之一:Qt样式表和盒子模型介绍
一.Qt样式表介绍 Qt样式表是一个可以自定义部件外观的十分强大的机制,可以用来美化部件.Qt样式表的概念.术语和语法都受到了HTML的层叠样式表(Cascading Style Sheets, CS ...