Python 用selenium实现自动发说说

用Selenium实现自动发说说

  笔者刚学selenium,突然想用它实现自动发说说,无非就是几个点击和输入嘛,应该很简单?

一、实现QQ空间自动登录

登录几种方法,既可以进入i.qq.com,然后模拟点击或者输入登录;还有就是直接利用QQ的一个面登录网址登录!

(一)、进入i.qq.com输入登录

这里输入密码登录网上代码很多,我就直接上代码了,另外如果你电脑登了QQ可以直接模拟点击登录,自动登录。

如图:

        

1.点击自动登录:

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()  # 获取火狐驱动
driver.get("https://i.qq.com/")  # 进入网页
# 方法一:直接点击登录(前提是电脑已经登录了QQ)
driver.find_element_by_class_name('login_wrap').click()  # 实现点击登录
print("登录成功!")

2.输入账号密码登录:
 

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()  # 获取火狐驱动
driver.get("https://i.qq.com/")
# 方法二 :输入账号密码登录
# 因为表在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.webdriver.common.keys import Keys
driver = webdriver.Firefox()  # 获取火狐驱动
driver.get("https://i.qq.com/")
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')

 

 

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值