1、定位元素第一步,浏览器中按F12,打开开发者调试工具
2、定位元素第二步,实例化浏览器,打开浏览器地址,最大化浏览器窗口
from selenium import webdriver
from selenium.webdriver.common.by import By
driver=webdriver.Chrome() #实例化浏览器
url='http://xxx.testedu.com/'
driver.get(url)
driver.maximize_window()
3、定位元素第三步,定位元素原理
寻找元素,html中的标签或则标签中的属性,通过元素的路径来寻找类似于文件夹中通过文件路径来寻找文件,通过元素的属性来寻找类似于通过文件类型或则名称来寻找文件。
4、定位元素第四步,八大元素定位方式
""" 八大元素定位 ID='id' XPATH='xpath' LINK_REXT='link text' PARTIAL_LINK_TEXT='partial link text' NAME='name' TAG_NAME='tag name' CLASS_NAME=’class name‘ CSS_SELECTOR='css selector' """
#link_text,方式一
ele1=driver.find_element(By.LINK_TEXT,'登录')
ele1.screenshot('截图/link_text登录链接截图.png')
#partial_link_text,方式二
ele2=driver.find_element(By.PARTIAL_LINK_TEXT,'注册')
ele2.screenshot('截图/partial_link_text注册截图.png')
#name,方式三
ele3=driver.find_element(By.NAME,'wd')
ele3.screenshot('截图/name输入框元素截图.png')
#tag_name,方式四
ele4=driver.find_element(By.TAG_NAME,'button')
ele4.screenshot('截图/tag_name搜索按钮元素截图.png')
#找多个元素,find_elements,tag_name
eles=driver.find_elements(By.TAG_NAME,'a') #find_elements返回多个元素
eles[24].screenshot('截图/tag_name多个元素定位截图.png')
#class_name,方式五
ele5=driver.find_elements(By.CLASS_NAME,'am-btn')
ele5[0].screenshot('截图/class_name搜索按钮截图.png')
#xpath,方式六 路径定位,相对路径/绝对路径,通过路径定位到3个,find_element默认返回第一个,a为标签,href为标签属性,用@来表示标签内的属性
ele6=driver.find_element(By.XPATH,'//a[@href="http://xxx.testedu.com/index.php?s=/index/user/logininfo.html"]')
#ele6=driver.find_element(By.XPATH,'//a[text()="登录"]')
#ele6=driver.find_element(By.XPATH,'html/body/div/div/ul/div/div/a[text()='登录']')
ele6.click()
#css_selector, 方式七 .表示申明的是css(即class属性),#表示申明id属性
#ele7=driver.find_element(By.CSS_SELECTOR,'.submit.am-btn>i.am-icon-search')
#ele7=driver.find_element(By.CSS_SELECTOR,'html>body>div>div>ul>div>div.menu-hd>a')
ele7=driver.find_element(By.CSS_SELECTOR,'button#ai-topsearch')
ele7.screenshot('截图/css定位搜索按钮.png')
#id,通过id定位,方式八
ele8=driver.find_element(By.ID,"ai-topsearch")
ele8.screenshot('截图/id定位搜索按钮.png')
#4.0以上版本特有的元素定位方法,网格定位,locate_with,to_right_of,to_left_of,near
ele9=driver.find_element(locate_with(By.TAG_NAME,"a").to_right_of(ele6)) #网格定位登录元素右边的注册元素
ele9.click()
5、定位元素第五步,定位元素后生成截图,并保存到固定文件夹
driver.get_screenshot_as_png() #浏览器的截图
#生成截图的保存
ele=driver.find_element(By.ID,'search-input') #寻找元素
ele.screenshot("截图/搜索框.png") #元素的截图保存,保存在脚本文件夹下
ele.screenshot("../截图文件夹/搜索框.png") #相对路径元素的截图保存,保存在指定的文件夹下
保存在脚本文件夹下图片示例:
保存在指定文件夹下图片示例
6、定位元素第六步,元素内寻找元素
ele10=driver.find_element(By.ID,"ai-topsearch") #寻找元素
ele11=ele10.find_element(By.CSS_SELECTOR,".am-icon-search") #元素内寻找元素
ele11.screenshot("截图/元素内寻找元素搜索按钮图标.png")
以上就是针对八大元素定位的总结,可以根据实际情况使用元素定位方式,从脚本的稳定性考虑,定位到的元素尽量只有唯一的一个。