python-web自动化-元素定位
# -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By # 打开Chrome浏览器和百度网页 driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 元素定位:id绝对唯一,name其次 # id 定位‘百度首页输入框’元素,并输入内容 driver.find_element_by_id('kw').send_keys('软件测试') driver.find_element(By.ID,'kw').send_keys('软件测试') # classname # 返回符合条件的第一个元素 driver.find_element_by_class_name('s_ipt').send_keys('今日新闻') # 返回符合条件的所有元素,返回值是list,每一个值都是一个Webelement对象 # 不能再后面用send.key(),报错AttributeError: 'list' object has no attribute 'send_keys' driver.find_elements_by_class_name('s_ipt') # tag_name driver.find_element_by_tag_name('span') driver.find_elements_by_tag_name('span') #name driver.find_element_by_name('wd').send_keys('成功') driver.find_elements_by_name('wd') #link_text driver.find_element_by_link_text('贴吧').click()#完全匹配,一模一样 driver.find_element_by_partial_link_text('贴').click()#模糊匹配,包含即可 driver.find_elements_by_link_text('贴吧')#完全匹配,一模一样 driver.find_elements_by_partial_link_text('贴') # css driver.find_element_by_css_selector('') # xpath driver.find_element_by_xpath('') # 1. 绝对定位(不推荐用) : 以/开头,父/子关系 # 2. 相对定位 # A:以//开头,在这个html页面中,有木有符合表达式的元素 # //标签名[@属性名称=属性值] # //标签名[@属性名称=属性值 and @属性名称=属性值] #B:层级定位 # C: 文本内容定位: //标签名[text()='文本值'] # D: 包含定位 : contains # contains(@属性名,属性值) 例如 //a[contains(@class,"btns-enter-qq")] # contains(text(),属性值) # E: 轴定位(通过以下轴名称定位) # ancestor : 祖先节点,包括父 # parent : 父节点 # preceding: 当前元素节点标签之前的所有节点(html页面先后顺序) # preceding-slibling:当前元素节点标签之前的所有兄弟结点 # following: 当前元素节点标签之后的所有节点(html页面先后顺序) # following-slibling:当前元素节点标签之后的所有兄弟结点 # /轴名称::节点名称[@属性名=属性值]