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

   

原文地址:https://www.cnblogs.com/qixc/p/11791857.html