selenium基本使用(二)九种定位方法

一、selenium------定位方法

一.selenium中的定位9种方法

二.详解定位方法

1、通过f12 或者开发者工具点开页面元素

案例:

网址:https://www.baidu.com

(2)查看属性值

2、定位方法

1.id定位方法

id=kw

复制代码
from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
dx.find_element_by_id("kw").send_keys("id定位")

2.name定位方法

复制代码
from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
dx.find_element_by_name("wd").send_keys("name定位")

3.class定位方法

class=s_ipt

复制代码
from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
dx.find_element_by_class_name("s_ipt").send_keys("class定位")

4、link定位方法

复制代码
from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.find_element_by_link_text("hao123").click()
复制代码
from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.find_element_by_partial_link_text("hao").click()

6.xpath定位:

找到后--右键--复制--复制Xpath

路径定位://*@id="kw"

复制代码
from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
dx.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath定位")

7.css定位

右键--复制--复制selector

css 辅助#kw

复制代码
from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
dx.find_element_by_css_selector("#kw").send_keys("css定位方法")

8. tag_name 方法:就是元素属性

8、通过input来定位

复制代码
from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
inputs=dx.find_elements_by_tag_name("input") #找到标签input
for i  in  inputs:
    if   i.get_attribute("name")=="wd":
        i.send_keys("tag_name定位方法")

9:js定位

复制代码
复制js格式:document.querySelector("#kw")
from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
js='document.getElementById("kw").value="js定位"'
dx.execute_script(js)

10.定位方法运用:

在这9种常用的定位方法中,优先顺序

1)有id优先使用id定位

2)没有id,考虑使用name或者class定位。

3)如果没有id,name,class再考虑用xpath,css定位。

4)如果是链接可以考虑使用link_text,partial_link_text 定位。

5)tag_name和JavaScript还是用的比较少的。

我们根据实际情况,具体问题具体分析

二、xpath和css定位详解

A.xpath 定位

格式:dx.find_element_by_xpath(xpath表达式)

两个定位:

1、绝对定位:

特点:a.以单斜杠/开头;

b.从页面根元素(HTML标签)开始,严格按照元素在HTML页面中的位置和顺序向下查找

右键copy full path复制

如:/html/body/div2/div1/div5/div/div/form/span1/input

2、相对定位:(我们一般都是用相对定位来定位的)

特点:a.以双斜杠//开头;eg://*[@id="kw"

b.不考虑元素在页面当中的绝对路径和位置;

c.只考虑是否存在符合表达式的元素即可。

3、使用标签名+节点属性定位

//*@id="kw"

语法://标签名@属性名=属性值

案例:

from selenium import webdriver

import time

dx=webdriver.Chrome()

dx.get("https://www.baidu.com")

time.sleep(2)

dx.find_element_by_xpath('//@id="form"/span1/input1').send_keys("path中层级定位") dx.find_element_by_xpath('//input@id="kw"').send_keys("xpath中的标签定位")
dx.find_element_by_xpath('//
@autocomplete="off" and @name="wd"').send_keys("xpath的组合属性and定位")是两个及两个以上属性的定位

dx.find_element_by_xpath('//@autocomplete="off"').send_keys("xpath的其他定位")
dx.find_element_by_xpath('//
@class="s_ipt"').send_keys("xpath的class定位")

@name="wd"').send_keys("xpath的name定位")

dx.find_element_by_xpath('//*@id="kw"').send_keys("相对定位")

time.sleep(2)

dx.quit()

B.css 定位

dx.find_element_by_css_selector("id='kw'").send_keys("css中id全称方法")

"#kw" :css中id简写方法

"class='s_ipt'" :css中class全称方法"

".s_ipt" :css中class简写方法

from selenium import webdriver #导入selenium模块中的webdriver

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("https://www.baidu.com") #通过get打开页面

time.sleep(2)

dx.find_element_by_css_selector("#form>span>input").send_keys("css中层级爷爷级方法")

dx.find_element_by_css_selector("#form > span.bg.s_ipt_wr.new-pmd.quickdelete-wrap>input").send_keys("css中层级父级方法")

dx.find_element_by_css_selector("autocomplete='off'class='s_ipt'").send_keys("css中组合属性方法")

dx.find_element_by_css_selector("autocomplete='off'").send_keys("css中其他属性方法")

dx.find_element_by_css_selector(".s_ipt").send_keys("css中class简写方法")

dx.find_element_by_css_selector("class='s_ipt'").send_keys("css中class全称方法")

dx.find_element_by_css_selector("name='wd'").send_keys("css中name全称方法")

dx.find_element_by_css_selector("id='kw'").send_keys("css中id全称方法")

dx.find_element_by_css_selector("#kw").send_keys("css中id简写方法")

time.sleep(20)

dx.close()

好文要顶 关注我

相关推荐
花酒锄作田1 小时前
[python]argparse 包在聊天机器人中的应用
python
NiceCloud喜云4 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
AI玫瑰助手4 小时前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
weixin_468466854 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
油炸自行车4 小时前
Claude Code 错误:API Error: 400 Failed to deserialize the JSON body into the
开发语言·javascript·json·trae·claude code·api error 400
肩上风骋4 小时前
C++14特性
开发语言·c++·c++14特性
小糖学代码5 小时前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理
人工智能·python·深度学习·神经网络
智慧物业老杨5 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
橙橙笔记5 小时前
Python的学习第一部分
python·学习
JAVA社区6 小时前
Java高级全套教程(十)—— SpringCloudAlibaba超详细实战详解
java·开发语言·spring cloud·面试·职场和发展