【python中selenium八大定位方法解析】


1.python模拟人,打开浏览器,操做页面,验证系统的功能是否正确()
2.web自动化应用场景:1.冒烟测试(稳定的业务场景,主流程确认系统可用)
2.回归测试(稳定的业务场景,页面改的小)
场景:自动化代码(selenium)》–driver.exe 》浏览器(chrome、IE、火狐)

HTML 元素定位 elements 头部信息(head) 身体 (boby) 标签对

类别不同 有的则不用相对,不用结束 输入框:input
1、引入webdriver


from selenium import webdriver
import time


2、选择一个浏览器类型来打开。
driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
# 3、访问一个网址
driver.get(“http://www.jd.com”) # 1
# 刷新当前页面
driver.refresh()
time.sleep(2)
driver.get(“http://www.zhihu.com”) # 2
time.sleep(2)
# 返回上一页
driver.back() # 1txh
time.sleep(2)
# 前进到下一页面
driver.forward()
# ------------
time.sleep(2)
# 3、关闭当前的浏览器会话。
driver.quit() # 1、chromedriver进程关掉。
2、清空会话数据,关闭浏览器。



1、引入webdriver
from selenium import webdriver
import time

2、选择一个浏览器类型来打开。
driver = webdriver.Chrome()
窗口最大化
driver.maximize_window()
3、访问一个网址
driver.get(“http://www.baidu.com”) # 1
id定位元素。1)查找元素的方法。
ele = driver.find_element_by_id(“kw”)
行输入操作
ele.send_keys(“csnd”)
time.sleep(5)
driver.quit()



通过name属性来定位 2)
driver.find_element_by_name(“wd”) # 返回只是一个元素。第一个匹配到的元素。
driver.find_elements_by_name(“wd”) # 列表。每一个元素,都是ele
# 标签名称。3)
driver.find_element_by_tag_name(“input”) # 返回只是一个元素。第一个匹配到的元素。
driver.find_elements_by_tag_name(“input”)
# class 4)
driver.find_element_by_class_name(“s_ipt”)
driver.find_elements_by_class_name(“s_ipt”)
#文本定位方法6)
driver.find_element_by_link_text(“更多产品”)
driver.find_element_by_partial_link_text(“产品”)

"""
8种定位方式:

1类:根据元素的单一属性来定位
1)id
2) name, class_name和tag_name
3)link_text和partial_link_text(针对a元素)

2类:组合元素的特征和关系来定位
xpath
绝对定位
相对定位!!-- // 开头、// 标签名[ @ 属性 = 值] // input[ @ id = “kw”]
条件:1、男性 2、170 3、北京 4…

1、元素特征
2、html当中过滤
标签名、属性、文本内容

绝对定位:
/ html / body / div[1] / div[1] / div / div[1] / div / form / span[1] / input
/ 开头 兄弟当中的位 父 / 子 路径顺序

相对定位:
1) // 标签名[ @ 属性 = 值]
// input[ @ id = “kw”] //input[@id=“kw”]

逻辑运算: and or
// 标签名[ @ 属性 = 值 and @属性=值]// 标签名[ @ 属性 = 值 or@属性=值]

文本定位
// 标签名[text() = 值]

"""


from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get(“https://www.baidu.com/”)
# 查找元素
ele=driver.find_element_by_xpath(‘//div[@id=“u1”]//a[@name=“tj_login”]’)
# ele=driver.find_element_by_link_text(“地图”)
# 元素的点击操作。
ele.click()
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get(“https://www.baidu.com/”)
# 查找元素
ele=driver.find_element(By.XPATH,‘//div[@id=“u1”]//a[@name=“tj_login”]’)
# 元素的点击操作。
ele.click()

"""
八种定位(八个API或者八个函数)
element:
id find_element_by_id 查找一个元素
class find_element_by_class_name
tag find_element_by_tag_name
name find_element_by_name
link find_element_by_link_text
partial_link find_element_by_partial_link_text

      xpath             find_element_by_xpath
      css_selector      find_element_by_css_selector
底层函数(终极函数)查所有元素
find_element(定位策略(id、name、xpath…),定位表达式)

查找所有匹配的元素
elements:
id find_elements_by_id 返回时一个列表
class find_elements_by_class_name
tag find_elements_by_tag_name
name find_elements_by_name
link find_elements_by_link_text
partial_link find_elements_by_partial_link_text

      xpath             find_elements_by_xpath
      css_selector      find_elements_by_css_selector
当你定位元素,无法直接定位时,可以通过定位子级元素返回父级来获取元素
//div[@id=“u1”]/…/…

id定位: driver.find_element(By.ID,“kw”).send_keys(“南方朱雀”)
name定位: driver.find_element(By.NAME,“wd”).send_keys(“南方朱雀”)
link_text定位 driver.find_element(By.LINK_TEXT,“新闻”).click()
partail_link_text定位 driver.find_element(By.PARTIAL_LINK_TEXT,“新”).click()
xpath定位: 绝对路径:
/开头是绝对路径 /html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input
相对路径://开头是相对路径 //input
1.相对路径+索引定位: //form/span[1]/input
2.相对路径+属性定位: //input[@autocomplete=‘off’]
3.相对路径+通配符定位*: //[@autocomplete=‘off’] //[@=‘off’] 复制xpath经常会出错,不是万能的
4.相对路径+部分属性值定位: 以开头://[starts-with(@autocomplete,‘of’)] 以结尾://[substring(@autocomplete,2)=‘ff’] 包含://[contains(@autocomplete,‘of’)]
5.相对路径+文本定位 //span[text()=‘按图片搜索’]

find_elements(定位策略(id、name、xpath…),定位表达式)

"""



from selenium import webdriver
from selenium.webdriver.common.by import By



driver = webdriver.Chrome()
driver.get(“https://www.baidu.com/”)
# 查找元素
eles =driver.find_elements(By.XPATH,‘//div[@id=“u1”]//a[@name=“tj_login”]’)#得到一个列表,列表就一个值
# 元素的点击操作。
eles [0].click() #列表中第一个元素点击
"""
1、点击 click
2.输入操作 send_keys
3.获取元素文本内容
4.获取元素的属性
"""


from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get(“https://www.baidu.com/”)
查找元素
driver.find_element_by_id(“kw”).send_keys(“孟晚舟”)
#点击 百度一下
driver.find_element_by_id(“su”).click()

python 头部注释的作用
头注释并不是为代码而服务,更多是被系统或解释器所调用
会告诉系统 Python 解释器在哪,脚本编码格式是啥
#!usr/bin/env python

-- coding:utf-8 _-
print(“hello-world”)







Console控制台  # f12

document对象:
a=document.getElementById(“kw”)
​
a.readOnly
false
a.readOnly=true
true
b= document.getElementById(“su”)
​
b.disabled
false
b.disabled
false

$x(‘//input[@placeholder=“请输入标题”]’)[0].outerHTML=" " # 元素不可见


if name == ‘main’:     # main方法是一个入口,不论多少代码,会先运行面此方法
unittest.main()

你可能感兴趣的:(python自动化,python,chrome,爬虫)