Python的web自动化学习(六)Selenium第一个网页操作

引言:

前面我们系统的介绍了一个各种selenium的工作原理、环境配置与准备、各种元素定位的方法,现在让我们一起来实践吧,以哔哩哔哩登录为例子说明:

Selenium自动登录B站(通过QQ登录)

为什么使用qq登录? 因为使用图片验证码登录,需要用到新的方法,比较麻烦。所以结合实际我认为用qq或者微信登录就比较适用。

我们先来一步一步解析 ,完整代码在最后

一、执行代码打开哔哩哔哩网页

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.maximize_window()
# todo 等待登录页面加载完成
wait = WebDriverWait(driver, 300)
driver.get( 'https://www.bilibili.com/')

二、按F12 进入调试 如需要定位 登录 按钮

后面的所有元素定位都是此三步骤即可

①鼠标放到登录按钮上

②右键 检查 点击

③可看到登录标签,我根据CSS_SELECTOR标签来定位,当然也可以使用xpath

代码如下:

##TODO 单击导航栏的图标 弹出登录模块
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,'[class="header-login-entry"]'))).click()

在这里插入图片描述

三、第二步点击后,接入此界面,点击qq登录,当然也可以使用其他 ,上面已经说了原因

代码如下:

# TODO 点击QQ登录
wait.until(EC.visibility_of_element_located((By.XPATH,'//div[2]/div[3]/span'))).click()

在这里插入图片描述

四、点击密码登录

因为进入此界面是进入新的网页,则需要先进入框架(后面会讲解),然后再进行新的框架界面操作

代码如下:

# TODO 先切入框架  然后点击密码登录
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,'//*[@id="ptlogin_iframe"]')))
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="switcher_plogin"]'))).click()

在这里插入图片描述

五、点击密码登录后,输入qq用户名,密码登录

代码如下:

# TODO  哔哩哔哩的 qq账号 密码
wait.until(EC.visibility_of_element_located((By.ID, 'u'))).send_keys('qq用户名')
wait.until(EC.visibility_of_element_located((By.ID, 'p'))).send_keys('qq密码')
wait.until(EC.visibility_of_element_located((By.ID, 'login_button'))).click()

在这里插入图片描述

下面我们使用两种方法来写完整的代码:

显性登录操作(未封装):

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.maximize_window()
# todo 等待登录页面加载完成
wait = WebDriverWait(driver, 300)
driver.get( 'https://www.bilibili.com/')
##TODO 单击导航栏的图标 弹出登录模块
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,'[class="header-login-entry"]'))).click()
# TODO 点击QQ登录
wait.until(EC.visibility_of_element_located((By.XPATH,'//div[2]/div[3]/span'))).click()
# TODO 先切入框架  然后点击密码登录
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,'//*[@id="ptlogin_iframe"]')))
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="switcher_plogin"]'))).click()
# TODO  哔哩哔哩的 qq账号 密码
wait.until(EC.visibility_of_element_located((By.ID, 'u'))).send_keys('qq用户名')
wait.until(EC.visibility_of_element_located((By.ID, 'p'))).send_keys('qq密码')
wait.until(EC.visibility_of_element_located((By.ID, 'login_button'))).click()

隐行登录操作(未封装):

步骤和上面的一样,就是用的方法稍微不同

from selenium import webdriver
from selenium.webdriver.common.by import By
dr=webdriver.Chrome()
dr.maximize_window()
dr.get(url='https://www.bilibili.com/')
dr.implicitly_wait(100)
ele=dr.find_element(By.CSS_SELECTOR,'[class="header-login-entry"]').click()
dr.find_elements(By.XPATH,'//span[@class="login-sns-name"]')[2].click()
frame=dr.find_element(By.ID,'ptlogin_iframe')
dr.switch_to.frame(frame)
dr.find_element(By.ID,'switcher_plogin').click()
dr.find_element(By.ID,'u').send_keys('qq账号')
dr.find_element(By.ID,'p').send_keys('qq密码')
dr.find_element(By.ID,'login_button').click()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经历一个春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值