一.
根据class 属性定位
from selenium import webdriver
# 创建 WebDriver 实例对象,指明使用chrome浏览器驱动
wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')
# WebDriver 实例对象的get方法 可以让浏览器打开指定网址
wd.get('http://cdn1.python3.vip/files/selenium/sample1.html')
# 根据 class name 选择元素,返回的是 一个列表 # 里面 都是class 属性值为 animal的元素对应的 WebElement对象
elements = wd.find_elements_by_class_name('animal')
# 取出列表中的每个 WebElement对象,打印出其text属性的值 # text属性就是该 WebElement对象对应的元素在网页中的文本内容
for element in elements:
print(element.text)
ps:
使用 find_elements
选择的是符合条件的 所有
元素, 如果没有符合条件的元素, 返回空列表
.text 可以打印文本
根据id定位
# 根据id选择元素,返回的就是该元素对应的WebElement对象
element = wd.find_element_by_id('kw')
# 通过该 WebElement对象,就可以对页面元素进行操作了 # 比如输入字符串到 这个 输入框里
element.send_keys('关键词\n')
ps:
1, /n 表示回车
2, 如果class属性有空格,如:<span class="chinese student">张三</span>;只能选择其中一个,chinese 或者 student.
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)
其他升级:
1,
element = wd.find_element_by_id('container')
#id内部的spans。
spans = element.find_elements_by_tag_name('span')
for span in spans:
print(span.text)
2,
# 通过WebElement对象的 get_attribute
方法来获取元素的属性值
element = wd.find_element_by_id('input_name')
print(element.get_attribute('class'))
3,
获取整个元素对应的HTML文本内容,可以使用
element.get_attribute('outerHTML')
只是想获取某个元素 内部
的HTML文本内容,可以使用
element.get_attribute('innerHTML')
4,
对于input输入框的元素,要获取里面的输入文本,用text属性是不行的,这时可以使用
element.get_attribute('value')
element = wd.find_element_by_id("input1")
print(element.get_attribute('value')) # 获取输入框中的文本
5,
通过WebElement对象的 text
属性,可以获取元素 展示在界面上的
文本内容。
但是,有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。 这时,用WebElement对象的text属性,获取文本内容,就会有问题。
出现这种情况,可以尝试使用
element.get_attribute('innerText')
或者
element.get_attribute('textContent')