Selenium3自动化测试【16】元素定位之Tag

tag name方法是经过对HTML页面中tag name匹配方式来定位元素的。相似与JavaScript中的getElementsByTagName()。
tag name方法在某些特定场合下十分有用,例如,经过标签<checkbox>的tag name能够一次性定位到页面中的全部复选框元素。html

1. 经过tag name定位Bing案例

依旧使用Bing首页的搜索框为例。
例:find_element_by_tag_name("input").send_keys("1234")。
Selenium3自动化测试【16】元素定位之Tag
搜索框元素的属性描述HTML代码以下,能够观察到该元素的标签是<input>:web

<input class="b_searchbox" id="sb_form_q" name="q" title="输入搜索词" type="search" value="" maxlength="100" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" aria-controls="sw_as" aria-autocomplete="both" aria-owns="sw_as">

Selenium经过FireFox浏览器驱动操做输入框的代码以下:api

from selenium import webdriver

driver= webdriver.Firefox()

driver.get("https://cn.bing.com/")
driver.find_element_by_tag_name("input").send_keys("bella")
driver.quit() # 关闭浏览器

可是经过标签名的定位方式,要慎用,若是可以不适用仍是尽可能不用,由于一个页面有大量重复的标签名,容易形成混乱,从而使Selenium没法找到正确的元素。
Bing首页的输入框和搜索按钮都是input标签,虽然前面的代码可以成功的执行且在输入框中成功键入了Bella,可是该案例具备必定的偶然性(是因为输入框元素是第1个input标签的缘故)。换成其它案例,就未必可以成功执行了。浏览器

====搜索框元素====app

<input class="b_searchbox" id="sb_form_q" name="q" title="输入搜索词" type="search" value="" maxlength="100" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" aria-controls="sw_as" aria-autocomplete="both" aria-owns="sw_as">

====Bing首页的搜索按钮====ide

<input type="submit" class="b_searchboxSubmit" id="sb_form_go" tabindex="0" name="go">

2. 经过tag name定位一组元素案例

在实际过程当中,可经过tag name定位一组元素。经过html语言简单编写了checkbox.html文件。checkbox.html页面的html代码以下(本书提供的资料里也会提供该案例)。测试

<html>
  <head>
        <title>复选框测试实例</title>
  </head>
  <body>
     请选择你喜好的水果</br>
       <input type="checkbox" name="fruit" value ="apple" >苹果<br>
       <input type="checkbox" name="fruit" value ="orange">桔子<br>
       <input type="checkbox" name="fruit" value ="mango">芒果<br>   
  </body>
</html>

checkbox.html页面的展示效果如图所示。
Selenium3自动化测试【16】元素定位之Tagui

经过checkbox.html页面的html代码能够看到3个复选框的标签都是<input>标签。
案例要求:
设计Selenium程序,实现同时选中3种水果的复选框。
代码以下:设计

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
driver.get("file:///D:/checkbox.html")       #checkbox.html的路径要根据本身的实际状况调整

inputs = driver.find_elements_by_tag_name("input")

for i in inputs:
    # 经过看源代码,使用type或name都可,由于三种水果这3个元素,这2个属性均相同
    if i.get_attribute("type") == "checkbox":
    #if i.get_attribute("name") == "fruit":
        i.click()
        sleep(3)
driver.quit()

经过上面的代码,能够看到是经过find_elements_by_tag_name方法定位了全部标签为<input>的元素。3d



【测试全系列视频课程】请点击我哦.....

(https://edu.51cto.com/lecturer/968349.html)


图书京东、当当有售
京东:https://item.jd.com/12784287.html
当当:http://product.dangdang.com/29177828.html

Selenium3自动化测试【16】元素定位之Tag

相关文章
相关标签/搜索