这几天已经被网课快逼疯了
课程不仅枯燥时间还长
于是决定在安排他一波
实现自动点击以及答题
开开电脑刷就完了
打会王者他不香吗
于是今天的主角就是selenium 配合Google Chrome
分享一个插件
Katalon Recorder
这个插件可以实现录制然后翻译出py代码
是不是很爽
说实话这个库,纯是为了偷懒才发现的
开始装逼了
需要自己安装一下
pip install selenium
安装好了之后呢
需要配合 相应 的内核驱动他才可以自己动起来
什么版本的浏览器就下载什么版本的内核驱动
Google Chrome内核驱动全版本下载地址
驱动下载chromedriver.storage.googleapis.com
edge firefox 浏览器都可以的
不要用国产浏览器 **的很
其他浏览器需要自己百度一下
啥都准备好了,,开撸
from selenium import webdriver
要是报错就说明你需要添加一下这个库
在设置中然后找到Project Interpreter
然后点击
好了就要启动起来浏览器
driver = webdriver.Chrome()
好啦,他启动起来了
然后
我们就要开始登陆我们上课的平台 了
登录 - 科苑创工场 - 创业教育协同平台 - Powered By EduSohowww.cgcedu.com
没错就是这个平台恶心人
我们请求一下
url = "http://www.cgcedu.com/login"
driver.get(url)
下来就是要输入账号密码然后登录
那就需要 定位到这些元素吧
怎么定位呢
定位有哪些方法
我们首先打开开发者工具(F12)看一下
比如我们这个平台
选择要定位的元素ctrl + shift + c 就可以定位到了
可以使用class name 还有 id 去定位,name css 定位吧
还可以使用xpath定位
我们右键然后copy---copy xpath
//*[@id="content-container"]/div/div[1]/a[2]
我们就得到了他的路径
我们知道了怎么定位元素我们点击一下登录按钮看一下效果
不输入账号密码
# click就是点击的意思
driver.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
看来是点击成功了
那怎么输入账号密码呢
就需要用send_keys()方法
driver.find_element_by_xpath('//*[@id="login_username"]').send_keys("zxcv")
# 输入账号
driver.find_element_by_xpath('//*[@id="login_password"]').send_keys("chenchen123")
# 输入密码
OK啦也成功了,这样就可以自动登录了
我们想要返回标签的内容怎么办呢
我们想要获取这个名字怎么办
就需要使用get_attribute()方法
源码是这样的
name = driver.find_element_by_class_name('link-dark').get_attribute("textContent")
print(name)
登录后就很顺利的取到了
其他几种可以参考这位知乎老哥的操作
Roe:常见selenium定位操作演示zhuanlan.zhihu.com
当你定位某一元素定位不到的时候需要看一下是有没有iframe
是否需要切换表单
比如这个平台的例子
我想获取到视频播放时间以便判断是否需要进行点击下一节
我怎么也没定位到,,心中只想F**K 他 一万遍
好好一看 有个这个玩意!!!
看这里
这个时候你定位是定位不到的
需要切换表单咋在进行操作
怎么整呢
我们通过id来定位到他
name也可以
driver.switch_to.frame("viewerIframe") # id 定位
要是遇见那种没有name 也没有 id 的就** 了
就需要从顶开始进就比较麻烦了
比如超星尔雅就是嵌套的iframe
还没有id,name
通过上面的代码我们就进入了iframe中,可以继续操作了
我们要获取时间就可以这样写了
driver.find_element_by_class_name('current-time').get_attribute("textContent")
这里还有要注意的地方,就是你切换进去了,要是想在操作主界面的元素就需
要切换出来
driver.switch_to.default_content()
# 不管他有几层的嵌套直接跳出最外层
# 要是双层的想要切换上一层就需要
driver.switch_to.parent_frame()
看到这里是不是凌乱了不少
这些都是网课逼出来的
叫我上网课看视频
不可能!!!!
Okl
还有一点测试 的时候使用异常
以确保出错了也可以退出内核驱动
要不是没有关闭的
可以打开任务管理器看一下
try:
name = driver.find_element_by_class_name('link-dark').get_attribute("textContent")
print(name)
except:
print("失败")
driver.quit()
就分享这么多吧。
嗯???不对啊