python+selenium Web自动化之获取网页元素的基本方法

from selenium import webdriver
#创建WebDriver类型的对象,指明使用谷歌浏览器驱动,其中Chrome实质上是一个WebDriver

项目路径下的类文件说明中有体现,是webdriver的别名

 

 


wd=webdriver.Chrome(r'D:\chromedriver_win32\chromedriver.exe')
#用get方法打开被测http网站
wd.get('http://www.baidu.com')
#方法1:在被测页面按F12看开发者工具窗口,在网页按住Ctrl+移动指针到需要查找的元素,开发者窗口会有相应元素的高亮部分。
#方法2:直接右击待捕捉元素组件,点击“检查”,开发者窗口会有相应元素的高亮部分。


根据组件元素的id值捕捉元素 find_element_by_id
#比如百度的搜索框id为kw,用webdriver定义的对象调用方法find_element_by_id(‘id值’)
element=wd.find_element_by_id('kw')
#调用方法send_keys('文本框输入的内容')在对象元素里输入内容
element.send_keys('cuiken')
#方法同上,调用同上方法查找“搜索”键元素的id值
element2=wd.find_element_by_id('su')
#调用方法click为点击id值为su的动作
element2.click('su')

 

根据组件元素的class属性捕捉元素 find_elements_by_class_name
注:elements为复数形式,若为单数形式,则输出class类的第一个元素
# 根据 class name 选择元素,返回的是 一个列表
# 里面 都是class 属性值为 animal的元素对应的 WebElement对象
elements = wd.find_elements_by_class_name('animal')
# 取出列表中的每个 WebElement对象,打印出其text属性的值
# text属性就是该 WebElement对象对应的元素在网页中的文本内容
for element in elements:
    print(element.text)
如果我们把
elements = wd.find_elements_by_class_name('animal')
去掉一个s ,改为
element = wd.find_element_by_class_name('animal')
print(element.text)
那么返回的就是第一个class 属性为 animal的元素

find_element 和 find_elements 的区别

使用 find_elements 选择的是符合条件的 所有 元素, 如果没有符合条件的元素, 返回空列表

使用 find_element 选择的是符合条件的 第一个 元素, 如果没有符合条件的元素, 抛出 NoSuchElementException 异常

class有多个类型时
#就像一个 学生张三 可以定义有 多个 类型: 中国人 和 学生 , 中国人 和 学生 都是 张三 的 类型。 #元素也可以有 多个class类型 ,多个class类型的值之间用 空格 隔开,比如
<span class="chinese student">张三</span> #注意,这里 span元素 有两个class属性,分别 是 chinese 和 student, 而不是一个 名为 chinese student 的属性。 #我们要用代码选择这个元素,可以指定任意一个class 属性值,都可以选择到这个元素,如下 element = wd.find_elements_by_class_name('chinese') #或者 element = wd.find_elements_by_class_name('student') #而不能这样写 element = wd.find_elements_by_class_name('chinese student')
根据tag名捕捉元素
# 根据 tag name 选择元素,返回的是 一个列表 # 里面 都是 tag 名为 div 的元素对应的 WebElement对象
elements = wd.find_elements_by_tag_name('div') # 取出列表中的每个 WebElement对象,打印出其text属性的值 # text属性就是该 WebElement对象对应的元素在网页中的文本内容 for element in elements: print(element.text)

 

通过WebElement对象选择元素
不仅 WebDriver对象有 选择元素 的方法, WebElement对象 也有选择元素的方法。
WebElement对象 也可以调用 find_elements_by_xxx,find_element_by_xxx 之类的方法
WebDriver 对象 选择元素的范围是 整个 web页面, 而
WebElement 对象 选择元素的范围是 该元素的内部。
element = wd.find_element_by_id('container')
# 限制 选择元素的范围是 id 为 container 元素的内部。
spans = element.find_elements_by_tag_name('span')
for span in spans:
    print(span.text)
输出结果就只有

内层11
内层12
内层21

 

 

 部分转载自:白月黑羽教程

posted @ 2021-09-03 23:44  cuiken  阅读(2104)  评论(0编辑  收藏  举报