首页 > 其他 > 详细

selenium 元素定位

时间:2020-02-05 19:46:29      阅读:58      评论:0      收藏:0      [点我收藏+]

1、基本定位(6种)

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(https://www.baidu.com)

#方式一,通过id,没有id时,优先选择name
ele = driver.find_element_by_id(kw) #定位id为kw的元素
print(ele)
print(ele.get_attribute(name)) #获取元素的name属性的值

#方式二,class属性
ele2 = driver.find_element_by_class_name(s_ipt) #通过class属性,获取第一个。有的class的值由多个组成,用空格分隔,如a_1 a_2,这时只能输入一个
ele2_1 = driver.find_elements_by_class_name(s_ipt)  #通过class属性,获取多个

#方式三,通过name属性
ele3 = driver.find_element_by_name(wd)
ele3_1 = driver.find_elements_by_name(wd)

#方式四,通过tag
ele4 = driver.find_element_by_tag_name(name)
ele4_1 = driver.find_elements_by_tag_name(name)

#方式五,a标签,完全匹配链接的文本内容
ele5 = driver.find_elements_by_link_text(新闻) # 如:<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
ele5_1 = driver.find_element_by_link_text()
#方式六,a标签,部分匹配链接的文本内容
ele6 = driver.find_element_by_partial_link_text(新闻)
ele6 = driver.find_elements_by_partial_link_text(新闻)

2、xpath

位置的法,谷歌f12ctrl+f助元素定位
//input[@name="wd"] //标签[@性名=]
//input[@type="hidden" and @name="ie"] andor接多个条件(逻辑运算)
//div[@id="u1"]/ a[@name="tj_login" and @class="lb"] #定位百度首的登/表示定位到的元素的下当单独定位某元素也无法单独定位的,可以使用层级定位的方式
//a[text()=""] 表示a标签中含有文本登的,里的text()是函,可知函的使用
//input[contains(@class,"username")] contains(@/text(),value) 包含函,适用情况属性由多个组成,用空格分(如a_1 a_2),由某一去匹配

 

#方式七 xpath
# 相对位置 以//开头,不依赖于页面的位置和顺序。只看整个表达式中,有没有符合表达式的元素
# 绝对位置 以/开头,非常依赖页面的位置和顺序(真正做项目,不太会使用,因为不太稳定)
# 相对位置,谷歌f12,ctrl+f辅助元素定位,如://input[@name="wd"]   //标签名称[@属性名称=属性值]
driver.find_element_by_xpath(//*[@id="kw"])

技术分享图片

 

 3、

selenium 元素定位

原文:https://www.cnblogs.com/hzgq/p/12264304.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!