获取元素属性\爬取页面源码\常用断言,最终目的都是为了验证我们实际结果是否等于预期结果

目录

1、获取元素属性

2、爬取页面源码

3、常用断言

1、获取元素属性

获取title:driver.title()

获取元素文本:driver.find_XX().text

获取元素标签:driver.find_XX().tag_name

获取元素的其他属性的值:driver.find_XX().get_attribute("class") 获取class属性的值

获取文本框输入的值:driver.find_XX().get_attribute("value") 获取文本框输入的值

获取浏览器的名称:driver.name

2、爬取页面源码

爬取页面源码(driver)

driver.page_source 返回页面源码

1、导入re模块

2、"非贪婪匹配,re.S('.'匹配字符,包括换行符)"

3、findall 方法返回的是一个 list 集合

# coding:utf-8

from selenium import webdriver
import re
driver = webdriver.Firefox()
driver.get("http://xx.com/")
page = driver.page_source
url_list = re.findall('href=\"(.*?)\"', page, re.S)
url_all = []
for url in url_list:
if "http" in url:
url_all.append(url)

爬取页面(requests) 导入soup来解析

用requests里的get方法打开博客首页,r.content返回整个html内容,返回类型为string,用html.parser解析html

# coding:utf-8
from bs4 import BeautifulSoup
import requests r = requests.get("http://www.cnblogs.com/yoyoketang/") blog = r.content
soup = BeautifulSoup(blog, "html.parser") times = soup.find_all(class_="xx")
for i in times:
     print i.a.string  # 获取a标签的文本 title = soup.find_all(class_="postTitle")
for i in title:
    print i.a.string

  

  

3、常用断言

assertEqual(self, first, second, msg=None)

--判断两个参数相等:first == second

assertNotEqual(self, first, second, msg=None)

--判断两个参数不相等:first != second

assertIn(self, member, container, msg=None)

--判断是字符串是否包含:member in container

assertNotIn(self, member, container, msg=None)

--判断是字符串是否不包含:member not in container

assertTrue(self, expr, msg=None)

--判断是否为真:expr is True

assertFalse(self, expr, msg=None)

--判断是否为假:expr is False

assertIsNone(self, obj, msg=None)

--判断是否为 None:obj is None

assertIsNotNone(self, obj, msg=None)

--判断是否不为 None:obj is not None

UI自动化之特殊处理四(获取元素属性\爬取页面源码\常用断言)的更多相关文章

  1. appium+python自动化:获取元素属性get_attribute

    使用get_attribute()获取元素属性,括号里应该填写什么? 查看appium源码 如果是获取resource-id,填写resourceId self.driver.find_element ...

  2. JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)

    JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性) 以下内容: 一.获取元素的属性 二.设置元素的属性 三.删除元素的属性 一.获取元素的属性 1-原生JS 获取属性 .ge ...

  3. JQ方法实用案例///鼠标移动到div和修改ipt中弹窗、CSS鼠标变小手、JQ获取元素属性、JQ选择器

    今天学习了jQ,jQ对js的帮助很大,菜鸟教程上也有属性.可以查看 js 和 jquery主要的区别 在 dom    想用jquery  必须先引入(顺序问题)        先css 再js:   ...

  4. delphi RTTI 四 获取类属性列表

    delphi RTTI 四 获取类属性列表 GetPropList(btn1.ClassInfo, tkAny, PropList) PropCount := GetTypeData(btn1.Cla ...

  5. JS中获取元素属性的逆天大法

    给大家聊下js中获取元素属性的逆天大法,胆小慎入,切记切记!!! innerHTML.outerHTML.innerText .outerText.value.text().html(),val() ...

  6. Selenium2+python自动化37-爬页面源码(page_source)

    前言 有时候通过元素的属性的查找页面上的某个元素,可能不太好找,这时候可以从源码中爬出想要的信息.selenium的page_source方法可以获取到页面源码. selenium的page_sour ...

  7. Selenium2+python自动化37-爬页面源码(page_source)【转载】

    前言 有时候通过元素的属性的查找页面上的某个元素,可能不太好找,这时候可以从源码中爬出想要的信息.selenium的page_source方法可以获取到页面源码. selenium的page_sour ...

  8. 2)JS动态生成HTML元素的爬取

    2)JS动态生成HTML元素的爬取 import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.W ...

  9. Python3+Selenium3+webdriver学习笔记10(元素属性、页面源码)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记10(元素属性.页面源码)'''from selenium i ...

随机推荐

  1. java复习(4)异常

    1.Java异常的分类和类结构图 1.Throwable是整个java异常体系的超类,所有的异常类都派生自这个类,包含Error和Exception这两个直接的子类,概括了所有能被当做异常跑出来的东西 ...

  2. Socket通讯-C#客户端与Java服务端通讯(发送消息和文件)

    设计思路 使用websocket通信,客户端采用C#开发界面,服务端使用Java开发,最终实现Java服务端向C#客户端发送消息和文件,C#客户端实现语音广播的功能. Java服务端设计 packag ...

  3. redis基础及redis特殊场景使用描述

    数据类型 String set list hash zset redis原理 单线程:redis是单线程+io多路复用:检查文件描述的就绪状态 对比memchached:多线程+锁 redis优势 解 ...

  4. python 快速排序实现

    # -*- coding: utf-8 -*- def quicksort(array): # 基线条件:为空或只包含一个元素的数组是"有序"的 if len(array) < ...

  5. Docker学习笔记--传送门(持续更新)

    1.ubuntu下安装docker:  https://www.cnblogs.com/salmonLeeson/p/11609699.html 2.为docker配置国内镜像加速器:https:// ...

  6. 点击Listview列头排序

    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) ListView1.Sorted = ...

  7. 最佳实践:深度学习用于自然语言处理(Deep Learning for NLP Best Practices) - 阅读笔记

    https://www.wxnmh.com/thread-1528249.htm https://www.wxnmh.com/thread-1528251.htm https://www.wxnmh. ...

  8. Python核心技术与实战——十一|程序的模块化

    我们现在已经总结了Python的基本招式和套路,现在可以写一些不那么简单的系统性工程或代码量较大的应用程序.这时候,一个简单的.py文件就会显得过于臃肿,无法承担一个重量级软件开发的重任.这就需要这一 ...

  9. nacos 动态刷新@ConfigurationProperties

    使用@ConfigurationProperties 可以替换@value   @ConfigurationProperties @Value 注解功能 可以批量注入配置文件中的属性 只能一个个指定注 ...

  10. Java开发神器——MyEclipse CI 2019.4.0 全新发布(附下载)

    MyEclipse线上特惠,在线立享专属折扣!火热开启中>> MyEclipse 2019的升级版本中,推出对Java 11的支持.性能改进及新的连接器等. [MyEclipse CI 2 ...