zoukankan      html  css  js  c++  java
  • selenium的定位方法-多元素定位

      在实际工作中,有些时候定位元素使用ID、NAME、CLASS_NMAE、XPATH等方法无法定位到具体元素,会发现元素属性有很多一致的,这个时候使用单元素定位方法无法准确定位到具体元素,例如,百度首页中,以tag_name元素来定位输入框,会发现有多个相同的input标签,无法准确定位,这个时候可以使用多元素定位方法,结果以列表形式展示,找到具体在列表中的位置就可以了,多元素定位方法和单元素定位方法基本上一致,只是element变成了elements,以下是代码举例

      1.find_elements_by_tag_name:

      以获取百度输入框为例,使用tag_name方法来实现定位,它的tag_name是input,首先获取input标签,代码如下:

      

      import time
      from selenium import webdriver

      browser = webdriver.Chrome()
      browser.maximize_window()
      browser.implicitly_wait(30)
      browser.get("http://www.baidu.com")
      # browser.find_element_by_xpath('//*[@id="kw"]').send_keys("selenium")
      tag_names = browser.find_elements_by_tag_name("input")
      for tag_name in tag_names:
      print(tag_name)
      time.sleep(10)

      browser.quit()
      运行上述代码可以发现会输出多个element。从输出结果中可以看出,多元素定位的方法是list,百度输入框的input标签是第8位,对应list的索引是7,所以代码可以修改如下:
      
      

      

      import time
      from selenium import webdriver

      browser = webdriver.Chrome()
      browser.maximize_window()
      browser.implicitly_wait(30)
      browser.get("http://www.baidu.com")
      # browser.find_element_by_xpath('//*[@id="kw"]').send_keys("selenium")
      # tag_names = browser.find_elements_by_tag_name("input")
      # for tag_name in tag_names:
      # print(tag_name)
      browser.find_elements_by_tag_name("input")[7].send_keys("selenium")
      time.sleep(10)

      browser.quit()
      其他多元素定位方法可以参考上述方法,基本上理论都是互通的。

       

  • 相关阅读:
    AWVS——windows下扫描(上)
    中介者模式
    设计模式-类型2
    设计模式=类型
    C++ 1
    字符占字节
    编程规范
    位运算相关规律
    十进制转二进制
    递归理解
  • 原文地址:https://www.cnblogs.com/qixc/p/11791857.html
Copyright © 2011-2022 走看看