Selenium提供了定位元素的方法find_element(),该方法被定义在WebDriver类中。
一、参数
1、两个参数,参数1根据不同定位方法确定,定位方法如下:
(1)通过id定位:使用参数By.ID定位元素的ID属性;
(2)通过元素名定位:使用参数By.NAME定位元素的NAME属性;
(3)通过标签名定位:使用参数BY.TAG_NAME定位元素的TAG_NAME属性;一般不使用该参数,使用该参数后方法会返回list,不能准确定位所找元素
(4)通过xpath定位:使用参数By.XPATH通过xpath表达式定位元素;
(5)通过css class定位:使用参数By.CLASS_NAME定位元素的class属性;
(6)通过css选择器定位:使用参数By.CSS_SELECTOR通过CSS选择器定位元素;
(7)通过链接文本定位:使用参数By.LINK_TEXT定位元素
(8)通过部分链接文本定位:使用参数By.PARTIAL_LINK_TEXT定位元素
2、参数2为上述对应属性的值
如何确定参数2:打开网页,选择任意元素,比如输入框,按钮,右键单击检查,就会有对应属性出现。以百度为例:
By.ID="kw"
By.NAME="wd"
By.TAG_NAME="input"
By.CLASS_NAME="s_ipt"
By.XPATH和By.CSS_SELECTOR可右键单击该元素,直接复制
By.LINK_TEXT和By.PARTIAL_LINK_TEXT为页面上任意链接文本,比如百度页面上的"新闻","首页"等,均可作为其值,两者区别在于,前者为链接的全部文本,后者为链接的部分文本
二、返回值
返回一个WebElement对象,这个对象代表页面上的一个元素
三、简单的代码示例
以下是一个简单的示例代码,展示如何使用find_element()方法通过各个属性定位元素
点击查看代码
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By#将各个元素定位方法封装成一个类
class TestCase:#初始化方法def __init__(self):#驱动程序打开浏览器self.driver=webdriver.Edge()#跳转对应网页self.driver.get("http://www.baidu.com")#网页最大化self.driver.maximize_window()#通过id定位元素def test_id(self):#网页中定位到输入框,输入关键词pythonself.driver.find_element(By.ID,"kw").send_keys("python")#定位到按钮并点击搜索self.driver.find_element(By.ID,"su").click()sleep(2)quit()#通过name定位元素def test_name(self):self.driver.find_element(By.NAME,"wd").send_keys("selenium")self.driver.find_element(By.ID,"su").click()sleep(2)quit()#通过xpath定位元素def test_xpath(self):self.driver.find_element(By.XPATH,"//*[@id='kw']").send_keys("selenium")self.driver.find_element(By.XPATH,"//*[@id='su']").click()sleep(2)quit()#通过CSS_SELECTOR定位def test_css_selector(self):self.driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("selenium")self.driver.find_element(By.CSS_SELECTOR,"#su").click()sleep(2)quit()#通过CSS_NAME定位元素def test_class_name(self):self.driver.find_element(By.CLASS_NAME,"s_ipt").send_keys("selenium")self.driver.find_element(By.ID,"su").click()sleep(2)quit()#通过LINK_TEXT定位元素def test_link_text(self):#网页中找到"贴吧"文本的链接并点击self.driver.find_element(By.LINK_TEXT,"贴吧").click()sleep(2)quit()#通过PARTIAL_LINK_TEXT定位元素def test_partial_link_text(self):#网页中找到含有"AI"文本的链接并点击self.driver.find_element(By.PARTIAL_LINK_TEXT,"AI").click()sleep(2)quit()if __name__ == "__main__":testcase = TestCase()#testcase.test_id()#testcase.test_name()#testcase.test_xpath()#testcase.test_css_selector()#testcase.test_class_name()#testcase.test_link_text()testcase.test_partial_link_text()