1.选择元素的基本方法
1.根据元素的ID属性选择元素:find_element_by_id
根据id选择元素,返回的就是该元素对应的WebElement对象
element = ('kw')
('自动化测试')
2.根据class名选择元素(class表示的是类别、属性):find_elements_by_class_name
from selenium import webdriver
# 创建 WebDriver 实例对象,指明使用chrome浏览器驱动
wd = ()
# WebDriver 实例对象的get方法 可以让浏览器打开指定网址
('')
# 根据 class name 选择元素,返回的是 一个列表
# 里面 都是class 属性值为 animal的元素对应的 WebElement对象
elements = ('animal')
# 取出列表中的每个 WebElement对象,打印出其text属性的值for element in elements:
print()
# text属性就是该 WebElement对象对应的元素在网页中的文本内容
find_element和find_elements的区别:
使用 find_elements
选择的是符合条件的 所有
元素, 如果没有符合条件的元素, 返回空列表
使用 find_element
选择的是符合条件的 第一个
元素, 如果没有符合条件的元素, 抛出 NoSuchElementException 异常
3.根据tag名选择元素:find_elements_by_tag_name
from selenium import webdriver
wd = ()
('')
# 根据 tag name 选择元素,返回的是 一个列表
# 里面 都是 tag 名为 div 的元素对应的 WebElement对象
elements = ('div')
# 取出列表中的每个 WebElement对象,打印出其text属性的值
# text属性就是该 WebElement对象对应的元素在网页中的文本内容for element in elements:
print()
4.根据WebElement对象选择元素
WebElement对象 也可以调用 find_elements_by_xxx
, find_element_by_xxx
之类的方法
WebDriver 对象 选择元素的范围是 整个 web页面, 而
WebElement 对象 选择元素的范围是 该元素的内部。
from selenium import webdriver
# 创建 WebDriver 实例对象,指明使用chrome浏览器驱动
wd = ()
# WebDriver 实例对象的get方法 可以让浏览器打开指定网址
('')
element = ('container')
# 限制 选择元素的范围是 id 为 container 元素的内部。
spans = ('span')
for span in spans:
print()
执行结果:
内层11
内层12
内层21
异常报错:NoSuchElementException
的意思就是在当前的网页上 找不到该元素, 就是找不到 id 为 1 的元素。
2.等待界面元素出现
implicitly_wait:
当发现元素没有找到的时候, 并不 立即返回 找不到元素的错误。而是周期性(每隔半秒钟)重新寻找该元素,直到该元素找到,
或者超出指定最大等待时长,这时才 抛出异常(如果是 find_elements
之类的方法, 则是返回空列表)
from selenium import webdriver
# 创建一个浏览器对象:调用Chromedriver服务,来生成一个浏览器
driver = ()
# 设置最大等待时间
(10)
# 访问一个url
('')
# 搜索流程的实现
# 输入搜索内容
element = ('kw')
('自动化测试')
# 点击百度一下按钮
('su').click()
# id为1的元素,就是第一个搜索结果
result = ('1')
print()
3.操控元素的基本方法:
1.点击元素:调用元素WebElement对象的 click方法
2.输入字符串:调用元素WebElement对象的send_keys方法
3.获取元素包含的信息:
1.获取元素的文本内容:通过WebElement对象的 text
属性,可以获取元素 展示在界面上的
文本内容
element = ('animal')
print()
2.获取元素属性:通过WebElement对象的 get_attribute
方法来获取元素的属性值
result = ('3001')
print(('cmatchid'))
3.获取整个元素对应的HTML
要获取整个元素对应的HTML文本内容,可以使用 ('outerHTML')
只是想获取某个元素 内部
的HTML文本内容,可以使用 ('innerHTML')
4.获取输入框里面的文字:
对于input输入框的元素,要获取里面的输入文本,用text属性是不行的,这时可以使用 ('value')
5.获取元素的文本内容2:
有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。 这时,用WebElement对象的text属性,获取文本内容,就会有问题。
出现这种情况,可以尝试使用 ('innerText')
,或者 ('textContent')
选择器
通过 CSS Selector 选择单个元素的方法是:find_element_by_css_selector(CSS Selector参数)
选择所有元素的方法是:find_elements_by_css_selector(CSS Selector参数)
1.根据tag名选择元素:直接写上tag名即可
比如 要选择 所有的tag名为div的元素,就可以是这样
elements = ('div')
等价于
elements = ('div')
2.根据id属性选择元素:在id号前面加上一个井号: #id值
from selenium import webdriver
# 创建一个浏览器对象:调用Chromedriver服务,来生成一个浏览器
driver = ()
# 设置最大等待时间
(10)
('')
elements = ('#searchtext')
for element in elements:
print()
()
3.根据class属性选择元素:在 class 值 前面加上一个点: .class值
from selenium import webdriver
# 创建一个浏览器对象:调用Chromedriver服务,来生成一个浏览器
driver = ()
# 设置最大等待时间
(10)
('')
#.animal意思是寻找class属性为为animal,'.'的意思是'值等于'
elements = ('.animal')
for element in elements:
print()
()
执行结果:
狮子
老虎
山羊
4.选择子元素和后代元素