admin管理员组文章数量:1608632
用Selenium实现自动发说说
笔者刚学selenium,突然想用它实现自动发说说,无非就是几个点击和输入嘛,应该很简单?
一、实现QQ空间自动登录
登录几种方法,既可以进入i.qq,然后模拟点击或者输入登录;还有就是直接利用QQ的一个面登录网址登录!
(一)、进入i.qq输入登录
这里输入密码登录网上代码很多,我就直接上代码了,另外如果你电脑登了QQ可以直接模拟点击登录,自动登录。
如图:
1.点击自动登录:
import time
from selenium import webdriver
from selenium.webdrivermon.keys import Keys
driver = webdriver.Firefox() # 获取火狐驱动
driver.get("https://i.qq/") # 进入网页
# 方法一:直接点击登录(前提是电脑已经登录了QQ)
driver.find_element_by_class_name('login_wrap').click() # 实现点击登录
print("登录成功!")
2.输入账号密码登录:
import time
from selenium import webdriver
from selenium.webdrivermon.keys import Keys
driver = webdriver.Firefox() # 获取火狐驱动
driver.get("https://i.qq/")
# 方法二 :输入账号密码登录
# 因为表在iFrame里面,所以需要进入iFrame里面
driver.switch_to.frame("login_frame") # 找到frame入口
driver.find_element_by_id("switcher_plogin").click() # 点击登录
# # 账号框输入自己的qq账号
driver.find_element_by_id("u").send_keys("你的账号") # 里面填你的账号
# #密码框输入密码
driver.find_element_by_id("p").send_keys("你的密码") # 密码
# #点击登陆按钮
driver.find_element_by_id("login_button").click()
print("登录成功!")
(二)、利用网址进入
先登录电脑QQ,点击空间(在断网的时候点击),然后把网址复制下来,然后直接模拟打开那个网址就好了;注意如果在有网络状态,那个网址会跳走,手快点也可以复制到。我这里就不演示了。
二、实现自动发说说
进去后想办法说说点击,这个也容易找到:
点击查看元素:
很容易找到 "QM_Profile_Mood_A" ,然后用,.find_element_by_id,定位然后点击就OK了。
接下来就是一个发说说的编辑框了,想办法把东西输入进去然后点击发表按钮就OK了
老办法,点击检查元素
看起来很容易,但是要注意下,这个元素在一个IFrame里面,先进入 ‘'app_canvas_frame'’
driver.switch_to.frame('app_canvas_frame')
# 同上面找iFrame方法找,就是往上看源代码,找到iFrame
然后直接定位这个class,.send_keys(‘测试说说’)
你会发现会报错!无法向它进行键盘输入!
我们明明可以定位到它,而且检查到也是它,其实问题就出来编辑框上,我们发现当我们用鼠标点击到编辑框,编辑框里面的class会变!
光标未在编辑框时:
光标在编辑框时:
问题就出来这,而且你当光标未在编辑框,你是定位不到后面那个class的!这么一来就有思路了,我们先模拟点击进入编辑框,然后再定位到后面那个class,在把需要发的内容发送到编辑框,最后点击发表!直接看代码:
import time
from selenium import webdriver
from selenium.webdrivermon.keys import Keys
driver = webdriver.Firefox() # 获取火狐驱动
driver.get("https://i.qq/")
elem = driver.find_element_by_class_name('login_wrap')
elem.click()
print("成功登录QQ空间!")
time.sleep(1)
driver.find_element_by_id("QM_Profile_Mood_A").click()
print('点击说说成功!')
time.sleep(2)
try:
driver.switch_to.frame('app_canvas_frame') # 进入iFrame
time.sleep(0.5)
try:
driver.find_element_by_css_selector('div.textinput.textarea.c_tx3').click()
# 因为第一个找到的class无法点击,所以我们找到可以点击然后光标进入编辑框的,然后模拟点击
time.sleep(0.5)
driver.find_element_by_css_selector('div.textinput.textarea.c_tx2.input_focus.textinput_focus').send_keys("自动发说说测试") # 这里应该和上面对齐的,可能是CSDN有长度限制吧,大家粘贴的时候注意下
print('文字输入成功')
driver.find_element_by_css_selector('a.btn-post.gb_bt.evt_click').click()
print('发送成功!')
finally:
print('OK!')
finally:
print('End')
版权声明:本文标题:Python 用selenium实现自动发说说 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728552044a1163474.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论