Selenium + Python 元素定位

目录

By.ID、By.NAME、By.CLASS_NAME

By.TAG_NAME

By.XPATH

BY.CSS_SELECTOR


有通过name , id , link_text , partial_link_text , tag_name , class_name , tag , xpath ,css_selector.

其中查看公共方法源码后,我们可以发现By.ID、By.NAME、By.CLASS_NAME、By.LINK_TEXT、By.PARTIAL_LINK_TEXT、By.TAG_NAME、这些公共方法其实是使用By.CSS_SELECTOR进行元素定位的。

用百度的搜索框为例:

By.ID、By.NAME、By.CLASS_NAME

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

browser=webdriver.Chrome()

browser.get('https://www.baidu.com')

sleep(1)

browser.find_element(By.NAME,'wd')

browser.find_element(By.CLASS_NAME,'s_ipt')

browser.find_element(By.ID,'kw')

 

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

browser=webdriver.Chrome()

browser.get('https://www.baidu.com')

sleep(1)

browser.find_element(By.LINK_TEXT,'开启中国同阿拉伯世界关系新时代')

browser.find_element(By.PARTIAL_LINK_TEXT,'中国同阿拉伯')

By.TAG_NAME

还是用百度搜索框为例

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

browser=webdriver.Chrome()

browser.get('https://www.baidu.com')

sleep(1)

browser.find_element(By.TAG_NAME,'input')

但是一般不用By.TAG_NAME,因为tag_name 很容易重复,所以定位效率较低。

By.XPATH

xpath,有相对路径和绝对路径两大类,一般使用相对路径+正则表达式的方法,不推荐绝对路径,因为绝对路径的后期维护成本较高。

xpath,定位到元素的html代码中,右键复制--> 复制xpath路径

由于XPath是通过路径从头到尾一点点遍历,所以速度很慢

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

browser=webdriver.Chrome()

browser.get('https://www.baidu.com')

sleep(1)

browser.find_element(By.XPATH,'//*[@id="su"]')

BY.CSS_SELECTOR

右键,选择复制selector,就可以得到元素

可以用单属性id,class_name,tag_name来定位

比如id单属性,前面加上#

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

browser=webdriver.Chrome()

browser.get('https://www.baidu.com')

sleep(1)

browser.find_element(By.CSS_SELECTOR,'#kw')

class_name单属性,前面加上.

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

browser=webdriver.Chrome()

browser.get('https://www.baidu.com')

sleep(1)

browser.find_element(By.CSS_SELECTOR,'.s_ipt')

也可以多属性定位

比如tag_name和id

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

browser=webdriver.Chrome()

browser.get('https://www.baidu.com')

sleep(1)

browser.find_element(By.CSS_SELECTOR,'input#kw')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值