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()
      其他多元素定位方法可以参考上述方法,基本上理论都是互通的。

       

  • 相关阅读:
    nohup npm start &启动之后关闭终端程序没有后台运行
    C++标准库之string返回值研究
    Apache Thrift的C++多线程编程定式
    实战C++对象模型之成员函数调用
    std::string的拷贝赋值研究
    REdis AOF文件结构分析
    使用Linux自带日志滚动工具logrotate滚动redis日志示例
    源码分析MySQL mysql_real_query函数
    源码解读Linux的limits.conf文件
    C++中的return和exit区别
  • 原文地址:https://www.cnblogs.com/qixc/p/11791857.html
Copyright © 2011-2022 走看看