selenium+python之元素定位方式介绍

网页自动化测试最基本的要求就是要定位到各个元素,然后才能对该元素进行各种操作(输入,点击,清除,提交等),所以今天来总结下Selenuim+Python最基本的几种定位方式及实例说明, 以百度搜索输入框为例,用谷歌浏览器具体说明各个定位方式的用法。

1.导入selenium包的webdriver方法

输入 from selenium import webdriver

2.从 time 模块中引入sleep函数,使用sleep函数可以让程序休眠

输入 from time import sleep

3.打开浏览器

(1)获取浏览器驱动,并打开谷歌浏览器,注意浏览器的第一个字母要大写

dr=webdriver.Chrome()

(2)打开被测网页

url = "https://www.baidu.com/"

dr.get(url)

4.元素定位方法

(1)通过id定位----find_element_by_id()

实例:dr.find_element_by_id("kw").send_keys("selenium自动化") #输入搜索关键字

注意点:id值必须是唯一的,id值是动态变化的,则不能使用该方法定位。

(2)通过name定位----find_element_by_name()

实例:dr.find_element_by_name("wd").send_keys("selenium自动化") #输入搜索关键字

注意点:name值也必须是唯一的。

(3)通过class_name定位----find_element_by_class_name()

实例:dr.find_element_by_class_name("s_ipt").send_keys("selenium自动化") #输入搜索关键字

注意点:class_name的值也必须是唯一的。

(4)通过link_text定位----find_element_by_link_text()

实例:dr.find_element_by_link_text("新闻").click()#点击按钮

注意点:link_text的值也必须是唯一的。

(5)通过partial_link_ text模糊文字定位----find_element_by_partial_link_text()

实例:dr.find_element_by_partial_link_text("改革开放").click() #点击按钮

注意点:link_text的值也必须是唯一的。

(6)通过tag_name定位----find_element_by_tag_name()

实例:dr.find_element_by_tag_name("input").send_keys("selenium自动化") #输入搜索关键字

标签名字最容易重复,当定位一组数据时,可使用

inputBoxes = dr.find_elements_by_tag_name("input")

for inputBox in inputBoxes:

if inputBox.get_attribute("maxlength") == "255" and \
            inputBox.get_attribute("sautocomplete") == ‘off‘:
             inputBox.send_keys("selenum自动化")

    (7)通过xpath定位,XPath是一种XML文档中定位元素的语言----find_element_by_xpath()

(7.1).根据绝对路径来定位

path1="/html/body/div/div/div/div/div/form/span/input"

dr.find_element_by_xpath(path1).send_keys("selenum自动化") #输入搜索关键字

(7.2).根据元素属性定位

dr.find_element_by_xpath("//input[@autocomplete=‘off‘]").send_keys("selenum自动化")#输入搜索关键字

(7.3).根据通过多个属性组合定位

dr.find_element_by_xpath("//input[@autocomplete=‘off‘ and @id=‘kw‘]").send_keys("selenum自动化")#输入搜索关键字

注意点:括号内的引号和方括号内的引号不能一样。

(7.4).通过层次与属性组合定位

path1 = "//span/input[@class=‘s_ipt‘]"

dr.find_element_by_xpath(path1).send_keys("selenum自动化")#输入搜索关键字

8.通过CSS定位----find_element_by_css_selector()

(8.1).通过class属性

dr.find_element_by_css_selector(".‘s_ipt").send_keys("selenum自动化")#输入搜索关键字

注意点:.号表示通过class属性来定位元素

(8.2).通过id属性定位元素

dr.find_element_by_css_selector("#kw")

注意点:#号表示通过id属性来定位元素

    (8.3).通过标签名定位元素

dr.find_element_by_css_selector("input")

(8.4)通过属性定位元素(挺常用的)

dr.find_element_by_css_selector("[name=‘wd‘]")

dr.find_element_by_css_selector("[maxlength=‘255‘]")

属性值包含某个值

属性值包含wd:适用于由空格分隔的属性值。

dr.find_element_by_css_selector("[name~=‘wd‘]")

(8.5)通过层级的父子定位元素

查找有父亲元素的标签名为span,它的所有标签名叫input的子元素

dr.find_element_by_css_selector("span>input")

(8.6)通过层级与属性组合定位

标签名#id属性值:指的是该input标签下id属性为kw的元素

dr.find_element_by_css_selector("input#kw")

标签名.class属性值:指的是该input标签下class属性为s_ipt的元素

dr.find_element_by_css_selector("input.s_ipt")

标签名[属性=’属性值‘]:指的是该input标签下name属性为wd的元素

dr.find_element_by_css_selector("input[name=‘wd‘]")

父元素标签名>标签名.class属性值:指的是span下的input标签下class属性为s_ipt的元素

dr.find_element_by_css_selector("span>input.s_ipt")

9.通过By定位元素

定位的类型包括By.ID,By.NAME,By.CLASS_NAME,By.TAG_NAME,By.LINK_TEXT,By.PARTIAL_LINK_TEXT,By.XPATH,By.CSS_SELECTOR

具体定位方式参考上方1-8的说明。

实例:dr.find_element(By.ID,‘kw‘)

注意:使用By定位方式,需先导入By类。

5.实例登录QQ邮箱

#导入selenium包的webdriver方法

     from selenium import webdriver
     #导入By类
     from selenium.webdriver.common.by import By
     #引入sleep函数
     from time import sleep
     #获取浏览器驱动,并打开浏览器
     dr=webdriver.Chrome()
     url="https://mail.qq.com/"
     dr.get(url)
     sleep(2)
     #将浏览器窗口最大化
     dr.maximize_window()
     sleep(2)
     #定位表单位置
     frame = dr.find_element_by_id(‘login_frame‘)
     dr.switch_to.frame(frame)
     dr.find_element_by_id(‘switcher_plogin‘).click()
     #输入用户名密码,并点击登录按钮
     dr.find_element_by_id(‘u‘).send_keys(‘****@qq.com‘)
     dr.find_element_by_id(‘p‘).send_keys(‘password‘)
     dr.find_element_by_id(‘login_button‘).click()
     dr.switch_to_default_content()

原文地址:https://www.cnblogs.com/xyx-001/p/9494460.html

时间: 2024-11-08 03:01:05

selenium+python之元素定位方式介绍的相关文章

selenium基础:元素定位之css_selector和轴定位

selenium提供了非常丰富的元素定位方式,下面一张思维导图是我根据工作经验总结的定位元素方式,还是比较全的 本篇博客重点介绍css_selector定位和轴定位 一 轴定位 轴名称 ancestor:祖先节点,包含父节点和祖父节点 parent:父结点 preceding_sibling:当前节点标签前的所有兄弟节点 following_sibling:当前节点标签后的所有兄弟节点 following:当前节点标签后的所有节点 使用语法 /轴名称::节点名称  注:轴定位最好用单斜杠 例子

selenium8中元素定位方式

Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素才能进行后续的自动化控制,我在这里将对各种元素定位方式进行总结归纳一下. 这里将统一使用百度首页(www.baidu.com)进行示例,f12可以查看具体前端代码.WebDriver8种基本元素定位方式find_element_by_id() 采用id属性进行定位.例如在百度页面中输入关键字 Selenium 进行搜索.百度部分关键源码如下:<span class="bg s_ipt

【Selenium WebDriver】元素定位函数 FindElement

定位Web页面上的元素,用FindElement函数,它可以根据元素的不同属性来快速定位.具体的属性如下: 例子: HTML页面文件: 1 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-us"> 2 <head> 3 <body> 4 <form name="loginForm"> 5 <label for="username

python selenium系列(二)元素定位方式

一 前言 元素定位,是操作元素的第一步,也是WebUI自动化的难点和核心. 二 元素定位方法 selenium提供了内置的方法完成对待操作元素的定位,主要分为8类,其中,每类又可细分为定位单个元素和定位多个元素,另外还提供了2个私有方法.详细如下: 定位单个元素 ·         find_element_by_id ·         find_element_by_name ·         find_element_by_xpath ·         find_element_by_

Selenium系列(一) - 8种元素定位方式的详细解读

安装Selenium和下载Driver 安装selenium pip3 install  selenium -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 下载Driver 打开:http://npm.taobao.org/mirrors/chromedriver/ 找到自己Chrome对应的版本下载即可 访问百度的小Demo #!/usr/bin/env python # -*- coding: utf-8 -*-

selenium.元素定位方式

定位元素的方式主要有以下八种: 通过id定位元素:find_element_by_id("id_vaule") 通过name定位元素:find_element_by_name("name_vaule") 通过tag_name定位元素:find_element_by_tag_name("tag_name_vaule") 通过class_name定位元素:find_element_by_class_name("class_name"

selenium元素定位方法介绍

元素定位方法 元素名称 webdriver API id find_element_by_id() name find_element_by_name() class name find_element_by_class_name() tag name find_element_by_tag_name() link text find_element_by_link_text() partial link text find_element_by_partial_link_text() xpat

Appium+python (3) 元素定位(1)

打开问价夹下面的uiautomatorviewer: 夜神模拟器里的App后,回到uiautomatorviewer: 点击左上角的Device Screenshot,这时你的夜神模拟器页面就会显示在这里,右侧就是对应的定位信息了,我们主要依靠右下角的Node Detail信息进行定位. 如果你有selenium的基础,那接下来介绍的基本一致,只是换了个方法而已: text find_element_by_name(u"视频") id find_element_by_resource-

CSS的三种定位方式介绍(转载)

在CSS中一共有N种定位方式,其中,static ,relative,absolute三种方式是最基本最常用的三种定位方式.他们的基 本介绍如下. static默认定位方式relative相对定位,相对于原来的位置,但是原来的位置仍然保留absolute定位,相对于最近的非标准刘定位,原来的位置消失,被后边的位置所顶替 下面先演示相对定位的案例 [html] view plain copyprint? <!DOCTYPE html> <html> <head> <