Selenium(三):操控元素的基本方法
1. 操控元素的基本方法
选择到元素之后,我们的代码会返回元素对应的 WebElement对象,通过这个对象,我们就可以操控元素了。
操控元素通常包括:
点击元素
在元素中输入字符串,通常是对输入框这样的元素
获取元素包含的信息,比如文本内容,元素的属性
1.1 点击元素
点击元素非常简单,就是调用元素WebElement对象的 click方法。前面已经使用过了。
当我们调用WebElement对象的click方法去点击元素的时候,浏览器接收到自动化命令,点击的是该元素的中心点位置 。
1.2 输入框
输入字符串也非常简单,就是调用元素WebElement对象的send_keys方法。前面已经使用过了。
html代码:
<h3 style="color: brown">输入框</h3>
<div>
<input id="input1" value="请输入姓名">
<br/><br/>
</div>
并且按F12,观察HTML的内容
我们要写一个自动化程序:要求在输入框中填入姓名:爱编程的小灰灰。
而且要做到输入框中已经有的提示字符,需要先清理掉。
代码应该如下:
from selenium import webdriver
wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
wd.get('http://127.0.0.1:8020/day01/index.html')
element = wd.find_element_by_id("input1")
element.clear() # 清除输入框已有的字符串
element.send_keys('爱编程的小灰灰') # 输入新字符串
1.3 获取元素信息
1.3.1 获取元素的文本内容
通过前面的学习,我们已经知道,通过WebElement对象的text属性,可以获取元素展示在界面上的文本内容。
比如:
element = wd.find_element_by_id('wolf')
print(element.text)
1.3.2 获取元素属性
通过WebElement对象的get_attribute方法来获取元素的属性值,比如要获取元素属性class的值,就可以使用element.get_attribute('class')。
html代码:
<form action="" method="post">
<input type="text" name="" id="input1" value="1" class="inputclass" />
<input type="text" name="" id="input2" value="2" class="inputclass"/>
</form>
比如:
from selenium import webdriver
wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
wd.get('http://127.0.0.1:8020/day01/index.html')
element = wd.find_element_by_id('input1')
print(element.get_attribute('class'))
执行完自动化代码,如果想关闭浏览器窗口可以调用WebDriver对象的 quit 方法,像这样 wd.quit()。
1.3.3 获取整个元素对应的HTML
要获取整个元素对应的HTML文本内容,可以使用element.get_attribute('outerHTML')。
如果,只是想获取某个元素内部的HTML文本内容,可以使用element.get_attribute('innerHTML')。
1.3.4 获取输入框里面的文字
对于input输入框的元素,要获取里面的输入文本,用text属性是不行的,这时可以使用element.get_attribute('value')。
比如:
from selenium import webdriver
wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
wd.get('http://127.0.0.1:8020/day01/index.html')
element = wd.find_element_by_id("input1")
print(element.get_attribute('value')) # 获取输入框中的文本
1.3.5 获取元素文本内容2
通过WebElement对象的text属性,可以获取元素展示在界面上的文本内容。
但是,有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。这时,用WebElement对象的text属性,获取文本内容,就会有问题。
出现这种情况,可以尝试使用element.get_attribute('innerText'),或者element.get_attribute('textContent')。
Selenium(三):操控元素的基本方法的更多相关文章
- selenium - 三种元素等待
1.sleep 休眠方法 sleep()由python的time模块提供. 当执行到sleep()方法时,脚本会定时休眠所设置的时长,sleep()方法默认参数是s(秒),sleep(2) 表示休眠2 ...
- <自动化测试>之<selenium API 查找元素操作底层方法>
搜罗了一些查找元素的除标准语句外,另外的语句使用方法,摘自 开源中国 郝云鹏driver = webdriver.Chrome(); 打开测试页面 driver.get( "http://b ...
- selenium自动化之元素定位方法
在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...
- Selenium(二):选择元素的基本方法
1. 选择元素的基本方法 对于百度搜索页面,如果我们想自动化输入爱编程的小灰灰,怎么做呢? 这就是在网页中,操控界面元素. web界面自动化,要操控元素,首先需要选择界面元素 ,或者说定位界面元素 就 ...
- selenium+python定位元素方法
定位元素方法 官网地址:http://selenium-python.readthedocs.org/locating-elements.html 这里有各种策略用于定位网页中的元素(l ...
- selenium java-3 定位元素的八种方法
web driver提供了八种元素定位的方法: id name class name tag name link text partial link text xpath css selector 如 ...
- Selenium爬取元素下子元素方法
Selenium提供了一下方法来定义一个页面中的元素: find_element_by_id find_element_by_name find_element_by_xpath find_eleme ...
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>
前置步骤: 上一篇的Python单元测试框架unittest,我认为相当于功能测试测试用例设计中的用例模板,在自动化用例的设计过程中,可以封装一个模板,在新建用例的时候,把需要测试的步骤添加上去即可: ...
- selenium之元素定位的方法(一)
WebDriver 对象有多种方法用于在页面中寻找元素.他们被分成find_element_*和find_elements_*方法.find_element_*方法返回一个WebElement对象,代 ...
随机推荐
- 你想要的 HBase 原理都在这了
目录 一. 集群架构 集群角色 工作机制 二.存储机制 A. 存储模型 B. LSM 与 Compaction C. Region 分裂 D. 自动均衡 三.访问机制 四. 鉴权 五. 高可靠 1.集 ...
- Python面向对象-多重继承之MixIN
以Animal类为例,假设要实现以下4种动物: Dog(狗).Bat(蝙蝠).Parrot(鹦鹉)和Ostrich(鸵鸟) 如果按照哺乳类和鸟类来区分的话,可以这样设计: Animal: |--Mam ...
- Linux电源管理(7)_Wakeup events framework
1. 前言 本文继续"Linux电源管理(6)_Generic PM之Suspend功能"中有关suspend同步以及PM wakeup的话题.这个话题,是近几年Linux ker ...
- centos和rhel中软件包管理常用命令
软件包管理的常用命令 rpm软件包的管理 查询类: rpm -q 软件包的查询: rpm -q 软件包的名字 //你的记住软件包完整名字 模糊查询:rpm -qa | grep ...
- Java对象导论
Java对象导论 1.1 抽象过程 万物皆对象. 程序是对象的集合(即:类),他们通过发送消息(调用方法)来告知彼此要做的. 每个对象都有自己的由其他对象所构成的存储(引用其他对象或基本类型,即组合) ...
- Leetcode题解 - 链表简单部分题目代码+思路(21、83、203、206、24、19、876)
- WebShell代码分析溯源(四)
WebShell代码分析溯源(四) 一.一句话变形马样本 <?php @$_++;$__=("`"^"?").(":"^"} ...
- Prometheus学习系列(六)之Prometheus 查询说明
前言 本文来自Prometheus官网手册和 Prometheus简介 Prothetheus查询 Prometheus提供一个函数式的表达式语言PromQL (Prometheus Query La ...
- JVM常用参数详解
JVM整个堆大小=年轻代大小 + 年老代大小 + 持久代大小,在JDK1.8及之后的版本由于永久代被元空间替代,所以jdk1.8中的堆=年轻代大小 + 年老代大小.本文使用的是JDK1.8 1.堆 ...
- Entity Framework Core Code First 项目实践
Entity Framework Core Code First 实践 任何一种技术的出现都是为了解决一系列特定的问题,只有了解了技术所要解决的关键问题,才能理解它的真正用途,之后,才能在实践中用好它 ...