Python+Selenium 元素定位

  • 作者:lwj
  • 分类:Selenium
  • 发表日期:2019-10-11 17:06:15
  • 阅读(528)
  • 评论(0)

定位单元素

By定位需要导入By类

from selenium.webdriver.common.by import By

id定位:

driver.find_element_by_id('kw')
driver.find_element(By.ID, 'kw')

name定位:

driver.find_element_by_name('wd')
driver.find_element(By.NAME,'wd')

class name定位:

driver.find_element_by_class_name('s_ipt')
driver.find_element(By.CLASS_NAME,'s_ipt')

tag_name定位:

driver.find_element_by_tag_name('input')
driver.find_element(By.TAG_NAME,'input')

link_text定位:

driver.find_element_by_link_text('hao123')
driver.find_element(By.LINK_TEXT,'hao123')

partial_link_text定位:

driver.find_element_by_partial_link_text('hao1')
driver.find_element(By.PARTIAL_LINK_TEXT,'hao1')

:link_text和partial_link_text是专门用于定位超链接的,html页面中的<a>标签;两者的区别在于link_text是定位完整的超链接文字,partial_link_text则只写部分超链接文字。

xpath定位:

# 绝对路径定位:定位div标签下的第二个div标签
driver.find_element_by_xpath('/html/body/div/div[2]')
driver.find_element(By.XPATH,"/html/body/div/div[2]")
# 层次属性定位:定位input标签中id='kw'的下的第一个input标签
driver.find_element_by_xpath("//input[@id='kw']/input")
driver.find_element(By.XPATH,"//input[@id='kw']/input")
# 属性模糊定位:定位input标签下属性id包含‘kw’值的元素
driver.find_element_by_xpath("//input[contains(@id,‘kw’)]")
driver.find_element(By.XPATH,"//input[contains(@id,‘kw’)]")
# 逻辑运算定位:定位id='su'且type='submit'的元素
driver.find_element_by_xpath("//*[@id='su' and  @type='submit']")
driver.find_element(By.XPATH,"//*[@id='su' and  @type='submit']")
# 通过text定位:用于匹配显示文本信息,ontains 和 text()也可以配合使用。
driver.find_element_by_xpath("//a[text(),'新闻')]")
driver.find_element(By.XPATH,"//a[text(),'新闻')]")
# 通过子元素定位父元素:定位input标签中id=kw的父元素   /..表示上一级
driver.find_element_by_xpath("//input[@id='kw']/..")
driver.find_element(By.XPATH,"//input[@id='kw']/..")
# 定位兄弟元素:定位input标签中id=kw的父元素 在定位其下的第二个span标签 /../span[2]表示上一级下的第二个div
driver.find_element_by_xpath("//input[@id='kw']/../div[2]")
driver.find_element(By.XPATH,"//input[@id='kw']/../div[2]")
# 通过子元素定位叔伯元素:定位input标签中id=kw的祖元素 在定位其下的第二个span标签 /../..表示上两级
driver.find_element_by_xpath("//input[@id='kw']/../../div[2]")
driver.find_element(By.XPATH,"//input[@id='kw']/../../div[2]")

css_selector 定位:

# 常用属性定位(css用#表示id、用.表示class,标签直接引用标签名)
  # 定位id=kw的元素
driver.find_element_by_css_selector('#kw')
driver.find_element(By.CSS_SELECTOR,'#kw')
  # 定位class=s_ipt的元素
driver.find_element_by_css_selector('.s_ipt')
driver.find_element(By.CSS_SELECTOR,'.s_ipt')
  # 标签绝对路径定位
driver.find_element_by_css_selector('/html/body/div/div[2]')
driver.find_element(By.CSS_SELECTOR,'/html/body/div/div[2]')
# 其他属性定位:
driver.find_element_by_css_selector("[type='submit']")
driver.find_element(By.CSS_SELECTOR,"[type='submit']")
# 标签属性组合定位:定位id='form'的form标签下的span标签下的name='wd'的input标签
driver.find_element_by_css_selector("form#form>span>input[name='wd']")
driver.find_element(By.CSS_SELECTOR,"form#form>span>input[name='wd']")

定位一组元素

# id定位
driver.find_elements_by_id('value')
driver.find_elements(By.ID,'value')
# name定位
driver.find_elements_by_name('value')
driver.find_elements(By.NAME,'value')
# class定位
driver.find_elements_by_class_name('value')
driver.find_elements(By.CLASS_NAME,'value')
# tag定位(使用标签名定位)
driver.find_elements_by_tag_name("value")
driver.find_elements(By.TAG_NAME,'value')
# link定位(使用显示文本定位)
driver.find_elements_by_link_text("value")
driver.find_elements(By.LINK_TEXT,'value')
# partial_link定位(使用超链接文本定位)
driver.find_elements_by_partial_link_text("value")
driver.find_elements(By.PARTIAL_LINK_TEXT,'value')
# xpath定位
driver.find_elements_by_xpath("value")
driver.find_elements(By.XPATH,'value')
# css_selector定位
driver.find_elements_by_css_selector("value")
driver.find_elements(By.CSS_SELECTOR,'value')

# 注:定位一组元素返回的是一个列表

参考:https://blog.csdn.net/qq_32897143/article/details/80383502

觉得不错,支持一下!

提交评论

您尚未登录,登录之后方可评论~ 登录 or 注册

评论列表

暂无评论
返回顶部

建议反馈

1. 可在博文底部留言评论

2. 发邮件到i_suichuan@163.com