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 ECdriver = 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 ECdriver = 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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/156266.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mozilla Firefox 119 现已可供下载

导读Mozilla Firefox 119 开源网络浏览器现在可以下载了,是时候先看看它的新功能和改进了。 Firefox 119 改进了 Firefox View 功能,现在可以提供更多内容,如最近关闭的标签页和浏览历史,你可以按日期或网站排序,还支…

huggingface离线模式及默认保存路径

T5Tokenizer.from_pretrained()函数会在线下载huggingface上的模型,并自动保存在C盘的.cache路径下: C:\Users\xxxxx\.cache\huggingface\hub\models--google--t5-v1_1-base # 这里xxxxx代表自己电脑用户名huggingface离线下载 以google/t5-v1_1-base为…

Ubuntu18.04系统镜像制作

安装使用systemback # 添加源 sudo add-apt-repository --remove ppa:nemh/systemback sudo add-apt-repository "deb http://ppa.launchpad.net/nemh/systemback/ubuntu xenial main"# 下载 sudo apt update sudo apt install systemback打开systemback,点击创建li…

sql-50练习题16-20

sql-50练习题16-20 前言数据库表结构介绍学生表课程表成绩表教师表 1-6 检索"01"课程分数小于60,按分数降序排列的学生信息1-7 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩1-8 查询各科成绩最高分、最低分和平均分:以如下形式…

软件测试简历项目经验怎么写,没有项目经验?

怎么办?只能接受低薪工作吗?No No No。本文就教大家如何解决这个问题。 为了帮助大家彻底解决“没有项目”这个拦路虎,接下来文章将从以下几个方面进行展开: 1、应该去哪找项目? 2、在众多的项目中,该怎么…

RPC与HTTP的关系

首选理清楚关系 RPC与HTTP是两个不同维度的东西 HTTP 协议(Hyper Text Transfer Protocol),又叫做超文本传输协议,是一种传输协议,平时通过浏览器浏览网页网页,用到的就是 HTTP 协议。 而 RPC&#xff0…

C# OpenCvSharp Yolov8 Face Landmarks 人脸特征检测

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_Yolov8_Demo {public partial class frmMain…

Navicat连接postgresql数据库 -->华为云服务器

Navicat连接postgresql数据库 -->华为云服务器 2.开放服务器端口:54323.Navicat连接postgresql数据库 2.开放服务器端口:5432 1-1.选择安全组 1-2. 添加规则 1-3.开放5432端口规则 1-4.查看规则 3.Navicat连接postgresql数据库

GB28181协议怎样执行保活命令

前言 GB28181协议是视频监控领域的国家标准,本文将解析如何在FFmpeg中增加对GB28181协议的支持,使其可以与支持GB28181协议的设备进行通信与控制,实现设备的注册、保活以及流媒体的传输。 背景介绍 GB28181协议指的是国家标准GB/T 28181—…

功能测试用例,需要详细到什么程度?

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型 一、config文件解读二、开始训练三、数据集分析四、ncnn部署 从零开始的目标检测和关键点检测(一):用labelme标注数据集 从零开始的目标检测…

我的风信共享

登录界面: 管理员可以对所有文章包括管理员发布的文章进行管理: 普通用户只能对自己的文章进行操作; 分类展示: 文章发布功能: 搜索功能: