zoukankan      html  css  js  c++  java
  • selenium.元素定位(find_element_by)

     八种定位元素的方式

    1. 通过id定位元素:find_element_by_id("id_vaule")
    2. 通过name定位元素:find_element_by_name("name_vaule")
    3. 通过tag_name定位元素:find_element_by_tag_name("tag_name_vaule")
    4. 通过class_name定位元素:find_element_by_class_name("class_name")
    5. 通过css定位元素:find_element_by_css_selector()
    6. 通过xpath定位元素:find_element_by_xpath("xpath")
    7. 通过link:find_element_by_link_text("text_vaule")
    8. 通过find_element_by_partial_link_text()
     
    百度首页面做个搜索selenium的例子,演示五个比较常用的定位方式
    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)   #隐形等待
    driver.get('https://www.baidu.com/')
    sleep(1)
    
    #以五种定位方式定位到百度首页的搜索输入框
    kw_find = driver.find_element_by_id('kw')
    #kw_find= driver.find_element_by_class_name('s_ipt')
    #kw_find= driver.find_element_by_name('wd')
    #kw_find = driver.find_element_by_xpath('//*[@id="kw"]')
    #kw_find = driver.find_element_by_css_selector('#kw') #id用#kw,class用.s_ipt ,与css的简写方式相同
    
    #send_keys() 是selenium自带的方法,用来输入文本
    kw_find.send_keys('selenium')
    
    #使用id定位方式定位到搜索按钮
    su_find = driver.find_element_by_id('su')
    
    #click() 是selenium自带的方法,用来点击定位的元素
    su_find.click()
    
    sleep(1)
    driver.quit()

     同样用百度首页的的其中一个hao123来练习 link_text和partial_link_text定位方式

     
    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)   #隐形等待
    driver.get('https://www.baidu.com/')
    sleep(1)
    
    #定位hao123页面的超链接并点击
    hao123_find = driver.find_element_by_link_text('hao123') #这个方法比较直接,即通过超文本链接上的文字信息来定位元素
    
    hao123_find = driver.find_element_by_partial_link_text('hao1') #这个方法是上一个方法的扩展。当你不能准确知道超链接上的文本信息或者只想通过一些关键字进行匹配时,可以使用这个方法来通过部分链接文字进行匹配
    hao123_find.click() sleep(1) driver.quit()

      

    还有一种是 tag_name 定位,此方式可以通过元素的标签名称来查找元素,但是一般WEB网站的标签名都是会重复的所有用的并不太方便。
    但是可以配合循环输出标签的属性。
    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    for img in driver.find_elements_by_tag_name("img"):
        print(img.text)
        print(img.size)
        print(img.tag_name)
    
    sleep(2)
    driver.quit()

      

    运行发现没有图片名称打印出来,说明百度首页,所有图片都没有给出text这个属性。

  • 相关阅读:
    C#解析数组形式的json数据
    js中的Array数组清空
    H5在js中向指定的元素添加样式
    C#的扩展方法
    C#常用设计模式
    Peasy.NET学习之并发问题处理
    dev中 ,usercontrol打印界面内容,打印预览和打印
    PL SQL 存储过程 SQL SERVER创建存储过程及调用,Oracle创建存储过程及调用
    C# 事务的创建,提交和回滚
    dev 中 字符串转中文拼音缩写,对grid列表进行模糊匹配,grid获取焦点行,gridlookupedit控件用拼音模糊匹配下拉选项
  • 原文地址:https://www.cnblogs.com/youngleesin/p/10447907.html
Copyright © 2011-2022 走看看