Selenium2+Python2.0自动化测试【3】 元素定位

1     元素定位

自动化需要掌握四步操作:获取元素,操作元素,获取返回结果,断言,最后自动出测试报告。

元素定位在这四个环节中是至关重要的,selenium的webdriver提供了八种基本的元素定位方法:

1.通过id定位:find_element_by_id()

2.通过name定位:find_element_by_name()

3.通过class定位:find_element_by_class_name()

4.通过tag定位:find_element_by_tag_name()

5.通过link定位:find_element_by_link_text()

6.通过partial_link定位:find_element_by_partial_link_text()

7.通过xpath定位:find_element_by_xpath()

8.通过css定位:find_element_by_css_selector()

前面六种是通过元素的属性来直接定位的,后面的xpathcss定位更加灵活

接下来就来讲webdriver提供的八种基本元素定位方法。 

1.1      环境准备

    1.浏览器选择:Firefox

    2.安装插件:Firebug和FirePath

      工具>附加组件>搜索:输入插件名称>下载安装后重启浏览器

    3.安装完成后,页面右上角有个小爬虫图标

    4.插件安装完成后,点开附加组件>扩展,如下图所示

1.2      查看页面元素

以百度搜索框为例,先打开百度网页

    1.第一步,点右上角爬虫按钮

    2.第二步,点左下角箭头

    3.第三步,将箭头移动到百度搜索输入框上,输入框高亮状态

    4.第四步,下方蓝色区域就是定位的到输入框的属性:

<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">

 

 

1.2.1  元素定位:find_element_by_id()

     <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">

    从上面定位到的元素属性中,可以看到有个id属性:id="kw",通过它的id属性定位到这个元素,定位到搜索框后,用send_keys()方法模拟输入字符串。

 

1.2.2  元素定位:find_element_by_name()

    <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">

 从上面定位到的元素属性中,可以看到有个name属性:name="wd",这里可以通过它的name属性定位到这个元素,定位到搜索框后,用send_keys()方法模拟输入字符串。

    

 

1.2.3  元素定位:find_element_by_class_name()

    <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">

 从上面定位到的元素属性中,可以看到有个class属性:class="s_ipt",这里可以通过它的class属性定位到这个元素,定位到搜索框后,用send_keys()方法模拟输入字符串。

 

1.2.4  元素定位:find_element_by_tag_name()

     <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">

从上面定位到的元素属性中,可以看到每个元素都有tag(标签)属性,如搜索框的标签属性,就是最前面的input,但是一般页面tag_name元素重复较多,定位不够精确,这里仅作用法介绍。

  

运行上面的代码会报错,标签定位用法没错,原因是如下图所示页面input标签不止一个,仅仅这样是找不到我们需要的元素。

 

1.2.5  元素定位:find_element_by_link_text()

    定位百度页面上"新闻"这个按钮,查看页面元素:<a class="mnav" name="tj_trnews" href="http://news.baidu.com">新闻</a>

    从元素属性可以分析出,其中有个href = "http://news.baidu.com"是超链接,对于这种元素,可以用find_element_by_link_text方法

 

1.2.6  元素定位:find_element_by_partial_link_text()

    如果一个超链接元素它的字符串比较长,输入全称的话,会显示很长,这种情况可以用模糊匹配方式find_element_by_partial_link_text(),截取其中一部分字符串就可以了;

    定位百度页面上"hao123"这个按钮,查看页面元素:<a class="mnav" name="tj_trhao123" href="http://www.hao123.com">hao123</a>。

 

 

1.2.7  元素定位:find_element_by_xpath()

    上述的定位方式都是通过元素的某个属性来定位的,如果一个元素它既没有id、name、class属性也不是超链接,或者说它的属性很多重复的,这个时候就可以用xpath来进行定位,这里我们使用FriePath查看一个元素的xpath。


 直接拷贝出来就可以使用:


XPath即为XML路径语言

不了解的可以到这里学习:

http://www.runoob.com/xpath/xpath-intro.html

http://www.w3school.com.cn/xpath/index.asp


1.2.8  元素定位:find_element_by_css_selector()

     css是另外一种比xpath更为简洁语法,先学会如何用工具查看并使用,打开FirePath插件选择css

    

 直接拷贝出来就可以使用:


对CSS不了解可以到这里学习:

http://www.runoob.com/css/css-tutorial.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值