Selenium 自动化 —— 实战篇之自动登录163邮箱

这篇具有很好参考价值的文章主要介绍了Selenium 自动化 —— 实战篇之自动登录163邮箱。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Selenium 自动化专栏系列文章

  • (一)入门和 Hello World 实例
  • (二)使用WebDriverManager自动下载驱动
  • (三)Selenium IDE录制、回放、导出Java源码
  • (四)浏览器窗口操作
  • (五)切换浏览器窗口
  • (六)定位页面元素

前面的系列文章已经对 WebDriver 驱动管理、浏览器窗口操作、页面元素定位等部分的知识进行了介绍,本篇文章,我们利用前面学过的知识,来写一个完整的程序,实现163邮箱的自动登录!
Selenium 自动化 —— 实战篇之自动登录163邮箱,Selenium 从入门到精通,selenium,自动化,测试工具,java

1. 创建工程

我们使用的是maven工程的项目,所以在pom.xml中引入相关的依赖:

  • Selenium 包
  • 自动下载驱动的WebDriverManager
<dependency>
	<groupId>org.seleniumhq.selenium</groupId>
	<artifactId>selenium-java</artifactId>
	<version>3.141.59</version>
</dependency>
<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.7.0</version>
</dependency>`

2. 编写程序框架

接下来,我们在main方法中对WebDriver进行了初始化操作,并且写了一个空方法 login163Mail(),我们用 Selenium 登录163邮箱会在这里实现。

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Mail163LoginTest {
    private static WebDriver driver;

    public static void main(String[] args) {
        // 自动下载和配置驱动
        WebDriverManager.chromedriver().setup();
        driver = new ChromeDriver();

        login163Mail();

        driver.quit();
    }

    public static void login163Mail(){

    }
}

3. 定位页面元素

在实现爬虫之前,我们需要对163邮箱的网页中的元素进行研究,这样后面我们才能用 Selenium 模拟登录的操作。

首先邮箱登录的URL是:https://mail.163.com/
打开网页后,我们主要关注的是下面这个登录表单,尤其是3个HTML元素:

  1. 账号文本框
  2. 密码文本框
  3. 登录按钮
    Selenium 自动化 —— 实战篇之自动登录163邮箱,Selenium 从入门到精通,selenium,自动化,测试工具,java
    在登录页右键,选中“Inspect”或者“检查”,进入网页调试控制台。
    Selenium 自动化 —— 实战篇之自动登录163邮箱,Selenium 从入门到精通,selenium,自动化,测试工具,java
    点击控制台左上角的“选中元素”图标,再点击“邮箱账号”文本框,控制台中的源码就自动定位到了账号文本框了。
    Selenium 自动化 —— 实战篇之自动登录163邮箱,Selenium 从入门到精通,selenium,自动化,测试工具,java
    看到这个input元素,我们就可以利用前一篇文章学到的《元素定位》找到这个账号文本框。
<input data-placeholder="邮箱账号或手机号码" name="email" 
data-type="email" data-loginname="loginEmail" 
data-required="true" class="j-inputtext dlemail j-nameforslide" 
type="text" autocomplete="off" tabindex="1" spellcheck="false" 
id="auto-id-1711460225439" placeholder="邮箱账号或手机号码" 
style="width: 236px;">

我们可以用id、name或其它属性,但是这里的id是自动生成的下次可能会变,所以我们用可读性更好的 name 属性来定位。

WebElement emailEle = driver.findElement(By.name("email"));

找到账号文本框后,我们需要在文本框中输入我们的账号,这里我们使用的是 sendKeys 方法:

emailEle.sendKeys("your_username");

密码框同样的处理!

WebElement passwordEle = driver.findElement(By.name("password"));
passwordEle.sendKeys("your_password");

接下来,我们需要定位 “登录” 按钮,同样使用元素定位器。

<a href="javascript:void(0);" id="dologin" data-action="dologin" 
class="u-loginbtn btncolor tabfocus btndisabled" tabindex="8">&nbsp;&nbsp;</a>

这里我们可以用id做选择器:

WebElement loginBtn = driver.findElement(By.id("dologin"));

然后,我们使用元素的 click() 方法点击这个登录按钮。

loginBtn.click();

这样,我们就完成了账号、密码的输入,和登录按钮的点击。

4. 完善登录代码

经过前面的分析,我们可以得到下面的完整代码:

public static void login163Mail() throws InterruptedException {
    // 打开登录页
    String url = "https://mail.163.com/";
    driver.get(url);

    // 输入账号
    WebElement emailEle = driver.findElement(By.name("email"));
    emailEle.sendKeys("your_username");
    // 输入密码
    WebElement passwordEle = driver.findElement(By.name("password"));
    passwordEle.sendKeys("your_password");
    // 点击登录
    WebElement loginBtn = driver.findElement(By.id("dologin"));
    loginBtn.click();

    TimeUnit.SECONDS.sleep(5);
}

这也太简单了吧。
我们运行一下我们的测试类。

不幸的是,代码没有像我们臆想中的那么顺利,运行程序,结果报错了:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: 
Unable to locate element: {"method":"css selector","selector":"*[name='email']"}

显而易见,没有找到邮箱文本框元素。

5. 为什么不能定位到元素

我们的账号文本框的name的确是“email”,这没有搞错,为什么却定位不到这个元素呢?

观察网页的整体结构:
Selenium 自动化 —— 实战篇之自动登录163邮箱,Selenium 从入门到精通,selenium,自动化,测试工具,java
我们发现,登录框居然是在一个 iframe 里面。

在Selenium中,要定位iframe里面的元素,你首先需要将webdriver 切换到对应的iframe中
这是因为iframe是一个内联框架,它将另一个HTML页面嵌入到当前页面中,Selenium默认不能直接访问iframe内的元素。

6. 切换到iframe

在我们这个系列之前的文章介绍过,浏览器窗口的切换方法,其实iframe的切换也类似。
有几种方式切换到iframe:

driver.switchTo().frame(0);     // 通过下标
driver.switchTo().frame("XXX"); // 通过name
driver.switchTo().frame("YYY"); // 通过id

因为登录页只有一个iframe,我们直接通过下标切换iframe,这样就简单。

7. 运行代码

完善后的代码如下,需要注意的是,你需要把下面的内容替换成你真实的账号、密码。

public static void login163Mail() throws InterruptedException {
    // 打开登录页
    String url = "https://mail.163.com/";
    driver.get(url);

    // 切换到登录框的iframe
    driver.switchTo().frame(0);

    // 输入账号
    WebElement emailEle = driver.findElement(By.name("email"));
    emailEle.sendKeys("your_username");
    // 输入密码
    WebElement passwordEle = driver.findElement(By.name("password"));
    passwordEle.sendKeys("your_password");
    // 点击登录
    WebElement loginBtn = driver.findElement(By.id("dologin"));
    loginBtn.click();

    TimeUnit.SECONDS.sleep(10);
}

然后,我们运行程序,发现很完美!、

登录页自动输入账号、密码
Selenium 自动化 —— 实战篇之自动登录163邮箱,Selenium 从入门到精通,selenium,自动化,测试工具,java

自动点击登录按钮后,成功登录到163邮箱。
Selenium 自动化 —— 实战篇之自动登录163邮箱,Selenium 从入门到精通,selenium,自动化,测试工具,java

8. 完整代码

完整代码如下:

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.TimeUnit;

public class Mail163LoginTest {
    private static WebDriver driver;

    public static void main(String[] args) throws InterruptedException {
        // 自动下载和配置驱动
        WebDriverManager.chromedriver().setup();
        driver = new ChromeDriver();

        login163Mail();

        driver.quit();
    }

    public static void login163Mail() throws InterruptedException {
        // 打开登录页
        String url = "https://mail.163.com/";
        driver.get(url);

        // 切换到登录框的iframe
        driver.switchTo().frame(0);

        // 输入账号
        WebElement emailEle = driver.findElement(By.name("email"));
        emailEle.sendKeys("abc@163.com");
        // 输入密码
        WebElement passwordEle = driver.findElement(By.name("password"));
        passwordEle.sendKeys("123456");
        // 点击登录
        WebElement loginBtn = driver.findElement(By.id("dologin"));
        loginBtn.click();

        TimeUnit.SECONDS.sleep(10);
    }
}

相关的依赖定义在 pom.xml 中:

<dependency>
	<groupId>org.seleniumhq.selenium</groupId>
	<artifactId>selenium-java</artifactId>
	<version>3.141.59</version>
</dependency>

<dependency>
	<groupId>io.github.bonigarcia</groupId>
	<artifactId>webdrivermanager</artifactId>
	<version>5.7.0</version>
</dependency>

到这里,我们就用 Selenium 完成了163邮箱的自动登录。是不是非常简单呢!所以不妨动手运行一下上面的例子,你会真正的体验到 Selenium 的强大。

关注我的博客CSDN - 兰亭序咖啡,和我一起学习探讨 Selenium 自动化和其它技术,共同学习共同成长!文章来源地址https://www.toymoban.com/news/detail-849454.html

到了这里,关于Selenium 自动化 —— 实战篇之自动登录163邮箱的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium WebDrive使用Edge浏览器模拟登录163邮箱

    ** ** 1.首先要在pycharm中下载好Selenium 2.然后下载浏览器驱动这里是链接 (https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) *注意版本要一致 *注意放置的位置要在python3.7(这里是我用的)的更目录下也就是找到python文件夹打开后放进去有些资料说要改名这里不用因为Seleni

    2023年04月15日
    浏览(53)
  • python selenium 自动化登录页面

    2024年02月10日
    浏览(47)
  • 【Selenium+python】自动化测试登录界面

    前言:已经学习selenium许久了,奈何公司的项目还在码代码中...,感觉自己学的东西快忘的差不多了,所以就找个网站练练手,顺便回顾一下UI自动化的知识,也希望跟我一样的小白有所受益。 用例1: 正确输入手机号和密码,点击登录 期望:有帮助中心字样(系统跳至首页

    2024年02月08日
    浏览(54)
  • 自动化测试: Selenium 自动登录授权,再 Requests 请求内容

    Selenium 自动登录网站、截图及 Requests 抓取登录后的网页内容。一起了解下吧。 Selenium: 支持 Web 浏览器自动化的一系列工具和库的综合项目。 Requests: 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。   Selenium 实现,相当于模拟用户手动打开浏览器、进行登录的过程。

    2024年01月21日
    浏览(51)
  • Python利用Selenium实现自动化验证登录

    Python里面使用Selenium是一个很重要的自动化测试模块,我们可以用它写一个验证登录脚本,有了这个可以用来保存cookie信息等,下面是一个简单的demo:

    2024年02月15日
    浏览(43)
  • 使用Python进行自动化测试【第163篇—自动化测试】

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 自动化测试是软件开发过程中不可或缺的一部分,它可以提高测试效率、减少重复工作,并确保软件质量。Python是一种流行的编程语言,有许

    2024年04月17日
    浏览(37)
  • Selenium自动化测试实战之自动化测试基础

    自动化测试概念 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程。 自动化只是测试方式,跟测试阶段无关。 可以把任何测试工作写一个程序自动化实现都可以称为自动化测试。 selenium自动化测试: 2023最新的Selenium自动化测试实战,没有比

    2024年02月13日
    浏览(64)
  • Selenium自动化测试框架中使用Cookies绕过登录

    在使用selenium测试后台时常常每个流程都需要走登录流程,这样自然比较浪费时间。如果遇到登录需要输入验证码等情况,就可能出师未捷身先死。 在Web应用中,登录状态通常是通过Cookie中对应的session id验证的。也是就是说,我们只要携带上登录后的Cookies,浏览器就会自动

    2024年02月09日
    浏览(45)
  • python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化登录测试,可提供点参考!下面就包括测试代码和每种测试情况的截图。 代码如下: 测试结果如

    2024年02月16日
    浏览(38)
  • Selenium 自动化处理授权框、登录框和握手框

    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 1v1 私教指导,BAT 级别的测试管理大咖量身打造职业规划。 简介

    2024年02月20日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包