selenium 元素查找背后的属性
Posted hao2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium 元素查找背后的属性相关的知识,希望对你有一定的参考价值。
1.首先你要安装selenium库啦
pip install selenium
2.selenium查找元素就八种方法
from selenium import webdriver
driver=webdriver.Chrome()
#说明find_elements_by 多了一个s,返回的就是一个列表形式
1) driver.find_element_by_id() #传入元素标签对里面的id数据 driver.find_element_by_id("kw")
2) driver.find_element_by_name() #传入元素标签对里面的name数据 driver.find_element_by_name("wd")
3)driver.find_element_by_class_name() #传入元素标签对里面class的名称 driver.find_element_by_class_name("s_ipt")
4) driver.find_elements_by_link_text() #传入元素标签对a里面的文本数据 driver.find_elements_by_link_text("hao123")
5) driver.find_element_by_partial_link_text() #传入元素标签对a里面的部分文本数据 driver.find_element_by_partial_link_text("hao")
6) driver.find_element_by_tag_name() #传入元素标签对的标签名 driver.find_element_by_tag_name("a")
#后面这两种百度很多自己去拓展
7) driver.find_element_by_xpath()
8) driver.find_element_by_css_selector()
3.查找元素返回WebElement对象背后的属性(以id为例子)
1)返回元素属性值
1 ele=driver.find_element_by_id("kw").get_attribute("class") 2 print(ele)
结果:s_ipt
2)返回元素属性值,但是该方法只能获取元素中id或name的属性值,其他的都不能获取
1 ele=driver.find_element_by_id("kw").get_property("id") 2 print(ele) 3 ele1=driver.find_element_by_class_name("s_ipt").get_property("id") 4 print(ele1) 5 ele2=driver.find_element_by_id("kw").get_property("name") 6 print(ele2) 7 ele3=driver.find_element_by_class_name("s_ipt").get_property("name") 8 print(ele3) 9 ele4=driver.find_element_by_class_name("s_ipt").get_property("class") #这种是不行的返回None 10 print(ele4)
结果:
kw
kw
wd
wd
None
property是DOM中的属性,是javascript里的对象;attribute是html标签上的特性,它的值只能够是字符串;
3)返回内部存储id,这个属性用于判断两个webelements是否引用同个元素
1 ele=driver.find_element_by_id("kw").id 2 print(ele) 3 ele1=driver.find_element_by_name("wd").id 4 print(ele1)
结果:因为都是引用同一个标签对里面的数据所以id肯定一样
0.822772467010251-1
0.822772467010251-1
4)返回标签对的名称
1 ele=driver.find_element_by_id("kw").tag_name 2 print(ele)
结果:input
5)判断元素是否可见(返回bool值)
1 ele=driver.find_element_by_id("kw").is_displayed() 2 print(ele)
结果:True
6)判断元素是否被选中(一般用于单选框或者复选框)
1 from selenium import webdriver 2 from selenium.webdriver.common.action_chains import ActionChains 3 driver=webdriver.Chrome() 4 driver.get("http://www.baidu.com") 5 ele=driver.find_element_by_xpath(‘//a[@name="tj_login"]/following-sibling::a[text()="设置"]‘) 6 ActionChains(driver).move_to_element(ele).perform() 7 driver.find_element_by_class_name("setpref").click() 8 time.sleep(3) 9 a=driver.find_element_by_id("sh_2").is_selected() 10 print(a) 11 driver.quit()
结果:True
7)判断元素是否存在HTML上(is_displayed()本身这个函数用于判断某个元素是否存在页面上(这里的存在不是肉眼看到的存在,而是html代码的存在,很少用到)
1 from selenium import webdriver 2 driver=webdriver.Chrome() 3 driver.get("http://www.baidu.com") 4 a=driver.find_element_by_id(‘su‘).is_displayed() 5 print(a) 6 driver.quit()
结果:True
以上是关于selenium 元素查找背后的属性的主要内容,如果未能解决你的问题,请参考以下文章
Selenium/Python:查找没有其他属性的 <label for=""> 元素