根据class属性选择元素
元素也有类型, class 属性就用来标志着元素 类型
若网页html内容如下:
<body> <div class="plant"><span>土豆</span></div> <div class="plant"><span>洋葱</span></div> <div class="plant"><span>白菜</span></div> <div class="animal"><span>狮子</span></div> <div class="animal"><span>老虎</span></div> <div class="animal"><span>山羊</span></div> </body>
选择所有动物可以用find_elements,如下所示
wd.find_elements(By.CLASS_NAME, 'animal') # 注意element后面多了个s
find_elements 返回的是找到的符合条件的 所有 元素 (这里有3个元素), 放在一个 列表 中返回。若没有找到元素则返回一个空列表。
若使用wd.find_element (注意少了一个s) 方法, 就只会返回 第一个 元素,若没有找到则抛出异常NoSuchElementException 。
元素也可以有多个 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')
根据tag名选择元素
HTML 通过 tag 来定义不同页面的元素。例如,<input>一般用来定义输入框,<a>标签 用来定义超链接等
通过指定 参数为By.TAG_NAME ,通过元素的标签名来定位元素。选择所有的tag名为 div的元素如下:
from selenium import webdriver from selenium.webdriver.common.by import By wd = webdriver.Chrome() wd.get('https://cdn2.byhy.net/files/selenium/sample1.html') # 根据 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对象 也有选择元素的方法。
WebDriver 对象 选择元素的范围是 整个 web页面,
而WebElement 对象 选择元素的范围是 该元素的内部
from selenium import webdriver from selenium.webdriver.common.by import By wd = webdriver.Chrome() wd.get('https://cdn2.byhy.net/files/selenium/sample1.html') element = wd.find_element(By.ID,'container') # 限制 选择元素的范围是 id 为 container 元素的内部。 spans = element.find_elements(By.TAG_NAME, 'span') for span in spans: print(span.text)
标签:wd,元素,selenium,find,tag,element,class,elements From: https://www.cnblogs.com/jiushao-ing/p/17507712.html