这篇先说下webdriver的几种元素定位方式,让大家有个大概的了解,UI自动化说白了就是使用代码代替人工去进行操作,在页面上,执行人员可以直接对看到的任何地方进行点击、拖动等操作,而代码的话需要识别到到底要点那个按钮、从那个位置拖动到那个位置等。所以为了能让代码能成功移动到各个元素上,元素定位是很关键的一点,如果你能定位到页面上的所有元素,那么对于写自动化已经成功了很大一部分了。
在WebDriver中有18中元素定位的方法,我们常用的只是其中8种。首先来看下都有哪18种元素定位方法。
从上图中可以看到主要分为两大类find_element和find_elements两部分,然后每部分中各有9种元素定位的方式,由于find_element和find_elements的9种元素定位方法大致一样,所以下面就只先列出了find_element的所有方法。(find_element和find_elements区别具体使用后面会详说)
find_element_by_id() #id定位
find_element_by_name() #name定位
find_element_by_class_name() #class定位
find_element_by_tag_name() #tag定位
find_element_by_link_text() #link定位
find_element_by_partial_link_text() #partial_link定位
find_element_by_xpath() #xpath定位
find_element_by_css_selector() #css定位
find_element() #元素定位参数化 不常用,常用的8种一般指的是上面那8种
知道了有这几种元素定位方法后,到底要中怎么才能使用呢,这里先简单说下,具体每个使用方法后面会具体说到。
我这里使用的是谷歌浏览器,首先我们可以先打开百度首页。
之后按F12或者在页面右键后会有个检查的选项。选择后可打开控制台,之后按下图的步骤就能看到id、name、class这些东西,每个元素的定位是不同的,但是在代码中使用的话,必须要保证其唯一性,比如我们要用id="kw" 来定位搜索框,就要保证这个 id="kw" 在该页面只有这一个元素才行,这样才能准确的找到我们要定位到的元素,之后写的多了之后,就可以就大概知道每个元素都能怎么定位了。
定位到元素之后,我们可能会对其进行内容输入、点击、情况搜索栏、刷新浏览器页面、后退浏览记录等,这时候就要使用键盘操作和鼠标操作的一些内容了,下面举个简单的例子,可以先了解下。(如果有条件可以直接复制粘贴运行下,鼠标操作、键盘操作、浏览器操作相关的后面也会单独说明,这块就是先对自动化有个大概的概念)
from selenium import webdriver #导入selenium模块的webdriver
import time #导入time模块
driver = webdriver.Chrome() #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com") #打开百度浏览器
driver.find_element_by_id("kw").send_keys("放假安排") #定位到输入框,然后输入框输入 放假安排
time.sleep(5) #等待5s
driver.find_element_by_id("su").click() #定位到百度一下的搜索按钮,然后点击该按钮
time.sleep(5) #等待5s
driver.back() #对浏览器进行后退操作
time.sleep(5) #等待5s
driver.quit() #关闭浏览器
代码解释:执行上面代码后,首先会打开谷歌浏览器,之后会打开百度的官网,然后会定位到输入框的元素(id="kw"),定位到后,会对其输入 放假安排4个字,然后等待5S(在这里加入等待只是为了能在执行的时候更直观的看到每步有没有操作,如果没有等待这个过程,会操作的很快,完全看不到都执行了哪些内容,time模块也是一个很重要的内容,在很多地方都必须要用到的,具体time模块相关的东西后面会单独写一篇来说明),之后定位到百度一下的按钮(id="su"),然后点击该按钮,之后等待5秒后,对浏览器进行后退的操作,之后等待5S关闭浏览器。
TIPS:如何确定元素是不是唯一可以在控制台直接ctrl+F去进行搜索看看是不是元素是唯一的,下面搜索结果中有两个kw,但是其中一个是wdfield="kw",另一个是id="kw"我们用的是id定位,所以只要保证id="kw"是一个即可。
这篇就先说这些,知道写一个ui的页面需要的流程和步骤即可,思路就是,想办法定位到要操作的元素,然后如果对该元素有相关操作的话,再去进行鼠标操作或者键盘操作即可。然后再这样一步步的去完善我们要执行的自动化的流程。
如果大家在使用过程中遇到了问题,可以在文章下留言,或者关注公众号:刘阿童木的进化记录,进行留言
下图为公众号二维码,内容会同步发出,大家可以关注一起学习!