web页面-元素定位

web自动化测试核心内容:

  • 元素定位
  • 网页操作
  • 等待
  • pytest + selenium
  • 项目实战

1.为什么要元素定位 

元素定位是为了操作浏览器,如输入内容,点击按钮等,就是手工做的,自动化都可以做

2.自动化去查找元素的方法

  1. 网页的页面结构(selenium),优点是兼容性强,只要结构不变就能找到,不管屏幕大小的改变还是像素的改变都不会影响
  2. 坐标(像素 x,y,airtest),缺点:当浏览器窗口放大或缩小的坐标会发生变化
  3. 图像识别(把输入框或按钮先截图下来,然后拿着图片来对照找,airtest),缺点:当浏览器放大或缩小后,可能截图识别不出来,还有图片占用CUP很多,处理速度要慢

3.什么是页面结构:

页面结构是由各种各样的网页标签构成,形成很复杂的树形结构,由标签、属性、text文本构成

4.find_element 和 find_elements 的区别

find_element 如果找到多个元素,只会返回第一个,如果没有找到,就会报错

find_elements 如果找到多个元素,都会存在列表当中,如果没有找到,不会报错

如果通过某各方式找到了多个元素,需要进一步去筛选,加条件,通过xpath来实现

from selenium import webdriver
import time


class TestDeom:
    def test_01(self):
        with webdriver.Chrome() as browser:
            browser.get('http://baidu.com/')
            # 找到多个元素后,只会返回第一个,没有找到会报错
            el = browser.find_element('name', 'wd')
            # elements是找到多个元素,打印出来是个列表,没有找到不会报错
            els = browser.find_elements('name', 'wd')
            print(els)

运行结果:

5.selenium支持的元素定位方式(八大元素定位方式)

  • id(通常是唯一的,有id的优先用id)
  • name  <input>
  • class_name (用的很多,因为页面样式用的比较多)
  • tag_name (基本不用)
  • link_text (链接文本)只能用在<a>标签内
  • partial_link_text(部分链接文本)只能用在<a>标签内
  • xpath(组合前面六种方式)
  • css_selector

使用pychram进行编写HTML:

在pycharm中也可以直接新建HTML文件,进行编写,步骤如下:

选择要新建的位置,右击选择【HTML File】

还可以选择HTML的版本

 

新建完以后,显示固定的内容,然后可以去编写代码

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>py44</title>
</head>
<body>
    hello python
</body>
</html>

 运行结果:(使用pychram运行)

 

还可以不使用pycharm运行,直接去对应的目录下,选择打开方式

 

HTML标签与属性介绍:

  • 每个标签都有自己的独特的能力
  • 标签中通过属性也可以获取某种能力

<input > 输入框 

<h2> 2级标题

<div>块级元素

<a>标签定义超链接

<img>插入图片

<checkbox>  复选框

<radio> 单选框

<id> 规定 HTML 元素的唯一的 id

<name>用于指定锚(anchor)的名称

<form>属性值写到接口中

<table> 表格

<ul>标签定义无序列表

<iframe>插入子网页

当未设置value属性时,点击提交按钮的结果如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>py44</title>
</head>
<body>
<!--    标题-->
<h2>登录</h2>
<!--把输入与选择的内容写到接口中-->
<form action="http://httpbin.org/post" method="post">
    <!--    输入用户名-->
    <div>
        用户名:<input name="username">
    </div>
    <!--    输入密码-->
    <div>
        密 码:<input type="password" name="pwd">
    </div>
    <!--    单选框-->
    <div>
        性 别:<input type="radio" name="gender" value="man">男
        <input type="radio" name="gender" value="female">女
    </div>
    <div>
        喜欢的电影:<input type="checkbox" name="movie" value="father">我和我的父辈
        <input type="checkbox" name="movie" value="changjinhu">长津湖
        <input type="checkbox" name="movie" value="jishengchu">寄生虫
    </div>
    <!--    上传文件-->
    <div>
        <input type="file" name="file">
    </div>
    <!--    提交-->
    <div>
        <input type="submit">
    </div>
    <!--    链接(可以是图片,也可以是文字)-->
    <a href="http://baidu.com">点击注册
        <br>
        <img src="2.png" width="260px" height="100px">
    </a>
    <br>
    <!--    子网页-->
    <iframe src="http://testingpai.com" width="800px" height="600px"></iframe>
</form>
</body>
</html>

总结:

  • 这就是前端跟后端的交互,通过value属性把值传给接口
  • name后面的值,可以自己随意编写,只要见名知意即可,name相同代表是一组内容:如性别跟电影两组内容
  • <img>标签可以嵌套在<a>标签内,这样点击图片就可以跳转链接了

おすすめ

転載: blog.csdn.net/weixin_40611700/article/details/121466507