zoukankan      html  css  js  c++  java
  • selenium (一) webdriver 元素定位方法

    在selenium/webdriver/remote/webdriver中可以看到webdriver提供的元素定位方法。

    目前提供的定位方式共8种:
    find_element_by_id()
    find_element_by_xpath()
    find_element_by_link_text()
    find_element_by_partial_link_text()
    find_element_by_name()
    find_element_by_tag_name()
    find_element_by_class_name()
    find_element_by_css_selector():

    另外,webdriver中还提供了8种元素复数的定位方法,返回的结果是一个元素列表:
    find_elements_by_id()
    find_elements_by_xpath()
    find_elements_by_link_text()
    find_elements_by_partial_link_text()
    find_elements_by_name()
    find_elements_by_tag_name()
    find_elements_by_class_name()
    find_elements_by_css_selector()

    这8种定位方法,主要是以前端页面标签和属性的形式进行元素定位。
    比如下标签:
    <input name="account1" id="account" class="account input" pattern="required" placeholder="邮箱/用户名/已验证手机" inform="0" />

    通过id方式定位:
    element_account=driver.find_element_by_id("account")
    element_account.send_keys("abc@qq.com")

    通过name方式定位:
    element_account1=driver.find_element_by_name("account1")
    element_account1.send_keys("abc@qq.com")

    通过class方式定位:
    element_account=driver.find_element_by_class_name("account input")
    element_account.send_keys("abc@qq.com")


    link_text、partial_link_text用于定位超链接
    find_element_by_link_text() 需要传递整个超链接作为参数(参数值如果为中文,需要转为unicode)
    find_element_by_partial_lint_text() 可以只传递部分超链接值作为参数(参数值如果为中文,需要转为unicode)

    <a href="/tshop/index.php?con=simple&amp;act=reg">立即注册</a>
    element_link=driver.find_element_by_link_text(u"立即注册")
    element_link.click()


    element_link=driver.find_element_by_partial_link_text(u"注册")
    element_link.click()


    通过xpath方式定位:
    element_xpath=driver.find_element_by_xpath('//[@id="main"]/div/div/form/ul/li[4]/button')
    element_xpath.click()


    通过css方式定位:
    element_css=driver.find_element_by_seletor_css("li:nth-child(4) > button")
    element_css.click()


    至于定位单个元素与多个元素的方式差不多,主要区别是element 返回值单个元素,elements返回的是一个元素列表。

    element_menu=driver.find_elements_by_xpath('//*[@id="header"]/div[3]/ul/li[@class="link"]')
    element_menu[1].click() #点击菜单栏的【限时抢购】(通过列表下标的形式调用)

    实例代码:

    #-*-encoding:utf-8-*-
    from selenium import webdriver
    from time import sleep
    
    
    driver=webdriver.Chrome()
    driver.get("http://testshop:8081/tshop/index.php?con=simple&act=login")
    
    #登录
    def login_shop(userName,pwd):
    	element_account=driver.find_element_by_id("account")   #通过id定位
    	element_account.send_keys(userName)
    	element_password=driver.find_element_by_name("password")  #通过name定位
    	element_password.send_keys(pwd)
    	element_loginBtn=driver.find_element_by_xpath('//button[@class="btn btn-main "]')  #通过xpath定位
    	element_loginBtn.click()
    
    
    def click_menu(value):
    	#0:首页、1:限时抢购、2:团购、3:服装、4:手机商城
    	element_menu=driver.find_elements_by_xpath('//*[@id="header"]/div[3]/ul/li[@class="link"]')   #通过elements 获取整个菜单元素,并存放在list中
    	element_menu[value].click()  #通过list下标进行点击操作
    
    login_shop(userName="123@qq.com",pwd="123456")
    sleep(2)
    click_menu(2)
    

      

  • 相关阅读:
    火狐常用的插件
    sourceinsight技巧
    为sourceinsight添加makefile、kconfig、*.S文件支持
    如何在shell中打印出带颜色的字符?
    Linux shell tee指令学习
    【转载】dirs、pushd、popd指令
    【转载】SHELL字符串处理技巧(${}、##、%%)
    【转载】利用shell脚本获取一个文件的绝对路径readlink
    如何查看智能手机的IP地址
    SDK Manager中勾选项
  • 原文地址:https://www.cnblogs.com/JcHome/p/10802066.html
Copyright © 2011-2022 走看看