python + selenium_元素定位

selenium2.0新增了webdrive,它是利用浏览器原生的API封装了一些底层操作的功能,支持python、java、php
selenium原理:三步走
代码的请求发送给浏览器驱动,
驱动像出租车司机解析了我们的需求
开着浏览器把我们送到了目的地

webdriver扮演了什么角色:
是selenium三个核心之一,封装了对浏览器操作的函数,方便我们直接调用,实现对浏览器的操控。

1、python基础知识,不说,请买一本“python编程从入门到实践”自行掌握。
涉及内容:搭建环境、变量、数据类型、列表、操作列表、if语句、字典、用户输入和while循环、函数、类、文件和异常处理、测试代码

2、元素定位
selenium中根据HTML页面元素的属性来定位,在web中操作步骤如下:
(1)定位页面元素,获取元素
(2)对元素实施操:单击、双击、拖拽、输入值等

selenium提供了8中定位方法,是id、name、xpath、class name 、tag name、link_text、partial link text 及css selector

id定位
HTML tag的id值是唯一,故不存在id定位多个元素情况,能用id就不用其他,增加维护成本,例:
百度首页输入python,执行后:

#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("python")

css定位
css主要是用id、class定位的,它定位选择器有十几种,优点:速度快、语法简洁,是真的简洁
css用id定位:

driver.find_element_by_css_selector("#kw").send_keys("python")

css用class定位:

driver.find_element_by_css_selector(".s_ipt").send_keys("python")

其他属性定位:

driver.find_element_by_css_selector('[name="wd"]')

复合定位:

driver.find_element_by_css_selector('[angwox="wd"][autocomplete="off"]')

模糊定位:

# 定位style值以tfjiao开头的元素
driver.find_element_by_css_selector('[style^="tfjiao"]').click()
# 定位style值以tengfei.gif结尾的元素
driver.find_element_by_css_selector('div[style$="tengfei.gif"]').click()
# 定位style值包含tengfei的元素
driver.find_element_by_css_selector('div[style*="tengfei"]').click()

右键复制:
选中元素,右键复制绝对路径,好像没啥说的
复制后粘贴:#form > input[type=hidden]:nth-child(3)

link_text
值是:超链接的全部名字
新闻

#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.find_element_by_link_text("新闻").click()

xpth定位
xpth是xml path语言的缩写,是一种用来确定xml文档中某部分位置的语言。xpath比css灵活,比css速度慢
(1)定位界面文本,这个用的挺多

driver.find_element_by_xpath('//*[text()="kw"]').click()

(2)属性值定位

driver.find_element_by_xpath('//*[@xygsng="kw"]').send_keys("python")

(3)了解下复合定位就行:取用css的组合吧

driver.find_element_by_xpath('//*[@xygsng="kw" and @xydafn="mg"]').send_keys("python")

(4)右键copy full xpth【绝对路径】,实在没办法了再用这个,反正右键复制有时候不靠谱,坑啊坑

driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input').send_keys("python")

partial_link_text
类似于模糊查询,这个没啥说的,就是有的超链接文字太长了,用这个比较舒服
新闻

#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.find_element_by_link_text("新").click()

name定位

#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.find_element_by_name("wd").send_keys("python")

class定位
百度首页搜索框为例:

#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
**driver.find_element_by_class_name("s_ipt").send_keys("python")**

tag_name定位:
基本用不到,看下就行了,通过标签的名称定位,

#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
print(driver.find_element_by_tag_name('form').get_attribute('name'))

关于八大定位个人理解:
1、css定位id、name
2、xpath定位文本值
3、css组合定位
4、xpath绝对路径【不利用维护,容易出问题,烦人】

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_焦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值