查找页面元素
前置条件:①Firefox浏览器 ②例子里的网页为https://www.baidu.com
1.按id属性查找 一般作为查找元素的首选属性 注意特殊情况-动态id
from selenium import webdriver # 从selenium库导入网络驱动包
from time import sleep # 从time库导入sleep
from selenium.webdriver.common.by import By # 用于对象的定位
browser = webdriver.Firefox() # 定义一个变量browser,代表浏览器的驱动
browser.get('https://www.baidu.com') # 打开浏览器
browser.maximize_window() # 窗口最大化
browser.find_element(By.ID, 'kw').send_keys('Selenium') # 在百度输入栏内输入Selenium
browser.find_element(By.ID, 'su').click() # 点击“百度一下”
sleep(2)
2 class定位 可能重复
browser.find_element(By.CLASS_NAME, 's_ipt').send_keys('Selenium')
browser.find_element(By.CLASS_NAME, 's_btn').click()
sleep(3)
3 tag定位 极其容易重复
browser.find_element(By.TAG_NAME, 'input').send_keys('Selenium')
# 报错:ElementNotInteractableException 元素不可输入异常
4 name定位 可能重复
browser.find_element(By.NAME, 'wd').send_keys('Selenium')
browser.find_element(By.ID, 'su').click()
5 link精确定位
browser.find_element(By.LINK_TEXT, '新闻').click()
6 link模糊定位
browser.find_element(By.PARTIAL_LINK_TEXT, '闻').click()
7 CSS定位
7.1 id定位
browser.find_element(By.CSS_SELECTOR, '#kw').send_keys('Selenium')
7.2 tag定位
browser.find_element(By.CSS_SELECTOR, 'input').send_keys('Selenium')
7.3 class定位
browser.find_element(By.CSS_SELECTOR, '.s_ipt').send_keys('Selenium')
7.4 其余属性定位 [属性名='属性值']
browser.find_element(By.CSS_SELECTOR, '[name="wd"]').send_keys('Selenium')
browser.find_element(By.CSS_SELECTOR, '[maxlength="255"]').send_keys('Selenium')
7.5 父子定位 即层级定位
browser.find_element(By.CSS_SELECTOR, 'span>input').send_keys('Selenium')
7.6 组合定位 特别不容易定位时才考虑
browser.find_element(By.CSS_SELECTOR, 'span.quickdelete-wrap>input[maxlength="255"][name="wd"]').send_keys('Selenium')
8 XPATH定位
browser.find_element(By.XPATH, '//*[@id="kw"]').send_keys('Selenium')
在每一步骤间最好设定好sleep时间,可以解决响应延迟带来的问题