使用selenium就不可避免的要提到界面元素定位,通过元素定位来实现一系列的逻辑操作。

  selenium提供了8中元素定位的方式:

    id、name、class name、tag name、link text、partial link text、xpath、css selector。

  其中使用xpath来根据id或class来定位元素的可以解决大部分问题。

  这8中定位方式在python selenium中使用的对应具体方法为:

 find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()

  具体用法:

  平常我们使用浏览器打开一个web网页,通过F12可以查看它的html元素,它是这样子的:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head> <body>
<form id="form" action="">
  姓名:<input id="name" class="fm" type="text" name="yourname" size="30" maxlength="20" value="输入框的长度为30,允许最大字符数为20"><br>
   </form>
 </body>
</html>

  我们可以根据html元素来定位input标签的输入框。

  1、通过set_window_size()方法来设置浏览器的大小。

 from selenium import webdriver

 chromedriver = "C:\Program Files\Google\Chrome\Application\chromedriver"
browser = webdriver.Chrome(chromedriver)
browser.get("http://m.baidu.com")
# 参数数字为像素点
print("设置浏览器宽480、高800显示")
browser.set_window_size(480, 800)
browser.quit()

  2、通过back()和forward()方法来进行回退与前进操作。

 from selenium import webdriver

 chromedriver = "C:\Program Files\Google\Chrome\Application\chromedriver"
browser = webdriver.Chrome(chromedriver)
#访问百度首页
first_url= 'http://www.baidu.com'
print("now access %s" %(first_url))
browser.get(first_url) #访问新闻页面
second_url='http://news.baidu.com'
print("now access %s" %(second_url))
browser.get(second_url) #返回(后退)到百度首页
print("back to %s "%(first_url))
browser.back() #前进到新闻页
print("forward to %s"%(second_url))
browser.forward()

  3、利用id定位百度输入框来进行输入值,进行点击操作。

  通过F12可以看到百度输入框id为“kw”,百度一下,搜索按钮id为“su”。

from selenium import webdriver

chromedriver = "C:\Program Files\Google\Chrome\Application\chromedriver"
browser = webdriver.Chrome(chromedriver)
#访问百度首页
first_url= 'http://www.baidu.com'
browser.get(first_url)
browser.find_element_by_id("kw").clear()
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()

  4、利用其他方式定位百度输入框来进行输入值,进行点击操作。

 # coding = utf-8
from selenium import webdriver chromedriver = "C:\Program Files\Google\Chrome\Application\chromedriver"
browser = webdriver.Chrome(chromedriver)
#访问百度首页
first_url= 'http://www.baidu.com'
browser.get(first_url) #通过name方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过tag name方式定位
browser.find_element_by_tag_name("input").send_keys("新闻")
#通过class name 方式定位
browser.find_element_by_class_name("s_ipt").send_keys("军事")
#通过CSS方式定位
browser.find_element_by_css_selector("#kw").send_keys("gun")
#通过xphan方式定位
browser.find_element_by_xpath("//input[@id='kw']").send_keys("AI") # 点击搜索
browser.find_element_by_id("su").click()
browser.quit()

  

selenium元素定位(三)的更多相关文章

  1. 自动化测试基础篇--Selenium元素定位

    摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...

  2. Selenium3 + Python3自动化测试系列二——selenium元素定位

    一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...

  3. selenium元素定位陷阱规避

    为什么selenium可以在各个浏览器上运行?因为selenium在与各个浏览器驱动执行前,会先把脚本转化成webdriver, webdriver wire协议(一种json格式的协议),这样就与脚 ...

  4. selenium元素定位之css选择器

    在selenium元素定位时会用到css选择器选取元素,虽说xpath在定位元素时能解决大部分问题,但使用css选择器选取元素也是一种不错的选择. css相较与xpath选择元素优点如下: 表达式更加 ...

  5. python selenium 元素定位(三)

    上两篇的博文中介绍了python selenium的环境搭建和编写的第一个自动化测试脚本,从第二篇的例子中看出来再做UI级别的自动化测试的时候,有一个至关重要的因素,那就是元素的定位,只有从页面上找到 ...

  6. Selenium+Java(三)Selenium元素定位

    前言 使用Selenium做元素定位的时候,需要用到HTML的知识,所以最好是能懂得HTML的基本知识. 一.页面元素的查看(以百度为例) 打开IE浏览器,点击F12进入开发者模式,点击图中红圈圈中的 ...

  7. Selenium 元素定位

    selenium通过driver.findElement(By selector)来定位元素,selector在selenium-java.jar中,里面的方法一共就8种,如下图: 基本定义: By. ...

  8. selenium元素定位不到之iframe

    我们在使用selenium的18中定位方式的时候,有时会遇到定位不上的问题,今天我们就来说说导致定位不上的其中一个原因---iframe 问题描述:通过firebug查询到相应元素的id或name等, ...

  9. selenium元素定位

    在网页自动化测试中,我们要让程序自动模拟我们的点击.输入.悬浮.拖动等操作,完成我们的测试用例组. 输入.点击.打开这样的动词,已经包含在了selenium的方法中,可以直接调用(当然你也可以自己写) ...

随机推荐

  1. SVN工具使用总结

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subversion ...

  2. PAT——1005. 继续(3n+1)猜想

    pat原题目:https://www.patest.cn/contests/pat-b-practise/1005 原题目: 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况 ...

  3. HUD 1288 Hat's Tea(反向的贪心,非常好的一道题)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1288 Hat's Tea Time Limit: 2000/1000 MS (Java/Others)  ...

  4. java 编写小工具 尝试 学习(四)

    1.在新建 的窗口上 ,添加了一个按钮后 ,给 按钮添加一个事件 ,意思就是  点击按钮后 发生什么事情!不废话 贴图 贴 代码! package jFrameDemo; import java.aw ...

  5. 我的前端工具集(七)div背景网格

    我的前端工具集(七)div背景网格   liuyuhang原创,未经允许禁止转载 目录 我的前端工具集 有时候总觉得div颜色过于白,于是给了10%的灰 但是并不一定能解决问题,因为页面中会有不均衡的 ...

  6. Change runlevel on CentOS 6.9/CentOS 7.5

    1:CentOS 6.9 # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, wit ...

  7. layer父界面调用子弹窗的方法和获取子弹窗的元素值总结

    layer.open({ type: 2 ,title: false //不显示标题栏 ,closeBtn: false ,area: ['460px', '45%'] ,shade: 0.5 ,id ...

  8. Ajax的open()方法

    Ajax的open()方法有3个参数:1.method:2.url:3.boolean: 参数1有get和post两个取值 参数2表示什么就不用说了 重点说下第3个参数:boolean的取值 当该bo ...

  9. flask第三方插件WTForms

    在django中有ModelForm, 虽然flask原生没有提供, 但是强大的第三方也提供了这样的功能 虽然不如django的强大, 但是基本的功能还是可以有的, 下面就来使用一哈. WTForms ...

  10. TImage保存图片到Stream及从Stream中取图片

    因为一个项目,不得不将图片保存到数据库中,需要的时候再从数据库中读取.初时,以为很简单,不就是一个Stream.事实上,也很简单.度娘一下,代码也很多,但,都是坑! 看一下TImage的源,Pictu ...