6_2 selenium定位元素的方法

 webdriver 提供了一系列的元素定位方法,常用的有以下几种:

find_element_by_id()  # 通过元素ID定位
find_element_by_name()  # 通过元素Name定位
find_element_by_class_name()  # 通过类名定位
find_element_by_tag_name()  # 通过元素TagName定位
find_element_by_link_text()  # 通过文本内容定位
find_element_by_partial_link_text()
find_element_by_xpath()  # 通过Xpath语法定位
find_element_by_css_selector()  # 通过选择器定位

注意

1、find_element_by_xxx找的是第一个符合条件的标签,find_elements_by_xxx找的是所有符合条件的标签。

2、根据ID、CSS选择器和XPath获取,它们返回的结果完全一致。

3、另外,Selenium还提供了通用方法find_element(),它需要传入两个参数:查找方式By和值。实际上,它就是find_element_by_id()这种方法的通用函数版本,比如find_element_by_id(id)就等价于find_element(By.ID, id),二者得到的结果完全一致。

举例:

"""selenium定位元素的方法"""


from selenium import webdriver
import time

driver_path = r"D:installchromedriverchromedriver.exe"
# 创建浏览器对象(句柄)
driver = webdriver.Chrome(executable_path = driver_path)
driver.get('https://www.baidu.com/')
# print(driver.page_source)

# inputTag = driver.find_element_by_id('kw')
# inputTag = driver.find_element_by_name('wd')
# inputTag = driver.find_element_by_class_name('s_ipt')
inputTag = driver.find_element_by_xpath("//input[@id='kw']")
# inputTag = driver.find_element_by_css_selector(".quickdelete-wrap > input")
inputTag.send_keys('python')
1.如果是想要对元素进行一些操作,比如给一个文本框输入值,或者是点击某个按钮,那么就必须使用selenium给我们提供的查找元素的方法。
2.如果只是想要解析网页中的数据,推荐将网页源代码扔给lxml来解析。因为lxml底层使用的是C语言,所以解析效率更高
通过page_source属性可以获取网页的源代码,接着就可以使用解析库(如正则表达式、Beautiful Soup、pyquery等)来提取信息了。
from selenium import webdriver
import time

driver_path = r"D:installchromedriverchromedriver.exe"
# 创建浏览器对象(句柄)
driver = webdriver.Chrome(executable_path = driver_path)
driver.get('https://www.baidu.com/')
# print(driver.page_source)
# 获取网页源码
page_text = driver.page_source
with open("jd.html", "w", encoding="utf-8") as fp:
    fp.write(page_text)

time.sleep(2)
# 关闭浏览器
driver.quit()
原文地址:https://www.cnblogs.com/sruzzg/p/13166588.html