1.如何实现自动打开百度网页并登录账号
首先使用chrome浏览器自动打开百度页面,然后寻找到登陆按键的节点元素,并实现点击。接着,找到用户名登陆的节点元素,实现扫码登陆到用户名登陆的切换。然后,找到用户名一栏的节点元素,自动输入用户名,找到密码一栏的节点元素,自动输入密码,找到登陆button的节点元素,自动按下按键。下面一布是针对需要进行短信验证的情况,此时会弹出短信验证窗口,找到发送短信的节点元素,并实现点击,手动填入接受到的验证码,并找到登陆button的节点元素,点击。成功登陆账号后,在搜索框输入指定内容,实现搜索。
1.1.使用chromedriver打开百度网页
使用chromedriver时需要填写存储路径,这是和其他驱动器不同的地方,代码如下:
driver=webdriver.Chrome("C:/Users/Administrator/AppData/Local/Google/Chrome/Application/chromedriver.exe")
url=("http://www.baidu.com/")
driver.get(url)
1.2.爬取登录节点并实现点击,扫码登陆与用户名登陆的切换
在实现这个功能后,必须调用sleep函数,实现对代码的暂停,否则将无法实现后面代码的操作,代码如下:
login=driver.find_element_by_name("tj_login")
driver.execute_script("arguments[0].click();", login)
time.sleep(3)#必不可少
login_means=driver.find_element_by_id("TANGRAM__PSP_11__footerULoginBtn")
driver.execute_script("arguments[0].click();", login_means)
当没有time.sleep函数时,就会出现只执行上面的login,并且运行报错说找不到id(“TANGRAM__PSP_11__footerULoginBtn”)节点。具体原因是,在上面点击完成后,网页页面会发生变化,执行下面的代码时,是以变化后的页面为基础的,sleep函数相当于给了页面改变的缓冲时间,如果网速或者电脑比较卡的可以适当增加sleep时间,使得确保执行下面代码的时候是在新的网页的基础上实现的。
1.3.用户名,密码的输入
这里需要先找到相应节点,在输入自己设置的用户名以及密码前,都需要使用clear()函数来对输入框进行数据清楚,也可以不用,但使用可以防止手误输入一些空格和不必要的字符。代码段如下:
user=driver.find_element_by_name("userName")
user.clear()
user.send_keys("输入用户名")
time.sleep(2)
pwd=driver.find_element_by_name("password")
pwd.clear()
pwd.send_keys("输入密码")
time.sleep(2)
enter=driver.find_element_by_id("TANGRAM__PSP_11__submit")
driver.execute_script("arguments[0].click();", enter)
time.sleep(10)
最后的time.sleep(10)是为了防止出现输入验证码的情况,预留的输入验证码的时间,可以根据个人的手速改变时间。
1.4.当第一次登陆时,自动对手机发送验证码,填写验证码并确认
第一次,或者在陌生设备登录时,会需要给手机发送验证码,代码段如下:
test=driver.find_element_by_id("TANGRAM__29__button_send_mobile")
driver.execute_script("arguments[0].click();", test)
time.sleep(10)
enter_final=driver.find_element_by_id("TANGRAM__29__button_submit")
driver.execute_script("arguments[0].click();", enter_final)
time.sleep(20)
1.5.登陆账号后自动搜索内容
成功登录账号,并且自动搜索内容代码段:
text=driver.find_element_by_name("wd")
text.send_keys("poorlytechnology")
text.send_keys(Keys.RETURN)
2.完整代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver=webdriver.Chrome("C:/Users/Administrator/AppData/Local/Google/Chrome/Application/chromedriver.exe")
url=("http://www.baidu.com/")
driver.get(url)
login=driver.find_element_by_name("tj_login")
driver.execute_script("arguments[0].click();", login)
time.sleep(3)#必不可少
login_means=driver.find_element_by_id("TANGRAM__PSP_11__footerULoginBtn")
driver.execute_script("arguments[0].click();", login_means)
user=driver.find_element_by_name("userName")
user.clear()
user.send_keys("输入用户名")
time.sleep(2)
pwd=driver.find_element_by_name("password")
pwd.clear()
pwd.send_keys("输入密码")
time.sleep(2)
enter=driver.find_element_by_id("TANGRAM__PSP_11__submit")
driver.execute_script("arguments[0].click();", enter)
time.sleep(10)#当要输入验证码时,暂停10s,以便输入验证码
# test=driver.find_element_by_id("TANGRAM__29__button_send_mobile")
# driver.execute_script("arguments[0].click();", test)
# time.sleep(10)
# enter_final=driver.find_element_by_id("TANGRAM__29__button_submit")
# driver.execute_script("arguments[0].click();", enter_final)
# time.sleep(20)
text=driver.find_element_by_name("wd")
text.send_keys("poorlytechnology")
text.send_keys(Keys.RETURN)
time.sleep(30)
driver.close()
driver.quit()