Selenium定位一组元素
写在前面
在此之前写过一篇文章关于Selenium常用的8种元素基本定位方式。详情见链接:Selenium元素定位
文末也有关于如何定位一组元素的方法。不过有的小伙伴反映不方便查找,现把该部分内容单独列出。
Selenium定位一组元素
WebDriver提供了8种方法用于定位元素,同时还提供了8种用于定位一组元素的方法。
find_elements_by_id() find_elements_by_name() find_elements_by_class_name() find_elements_by_tag_name() find_elements_by_link_text() find_elements_by_partial_link_text() find_elements_by_xpath() find_elements_by_css_selector()
复数定位方式每次取到的都是具有相同类型属性的一组元素,所以返回的是一个list队列。接下来通过一个案例演示一下如何使用以上方法定位一组元素:
#find_elements.py #www.testclass.cn #Altumn from time import sleep from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(10) driver.get("https://www.baidu.com") Search_text="testclass.cn" driver.find_element_by_id("kw").send_keys(Search_text) driver.find_element_by_id("su").click() sleep(1) # 定位一组元素,这里通过定位搜索结果的标题; elements = driver.find_elements_by_css_selector('div>h3>a') # 循环遍历出每一条搜索结果的标题 for i in elements: print(i.text) driver.quit()
执行结果如下所示:
PS C:\Users\WangXiao\Desktop\python> cd 'c:\Users\WangXiao\Desktop\python'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Users\WangXiao\AppData\Local\Programs\Python\Python36\python.exe' 'c:\Users\WangXiao\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\ptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' '53612' 'c:\Users\WangXiao\Desktop\python\find_elements.py' DevTools listening on ws://127.0.0.1:12406/devtools/browser/f080d3e5-4ad1-4677-b5f0-c6e574eeff29 软件测试testclass.cn - 软件测试技术分享 Katalon Studio录制回放功能使用介绍 – 软件测试testclass.cn Katalon Studio元素抓取功能Spy Web介绍 – 软件测试testclass.cn Katalon Studio操作界面详细说明 – 软件测试testclass.cn 一款超好用的Http抓包工具:Fiddler – 软件测试testclass.cn TestClass - 教程中心 - 阿里云 好课网 Python笔记:程序设计IPO模式 – 软件测试testclass.cn 软件测试人:给自己一个梦想! – 软件测试testclass.cn Katalon Studio一款免费的自动化测试工具 – 软件测试testclass.cn
小节
定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在element后面多了一个s表示复数。 以上内容为如何定位一组元素。如果在日常的自动化测试中不知道如何更系统的进行元素定位,可以参考另一篇文章:Selenium必须掌握的元素定位方法
作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可
文章评论(2)
还没有尝试过,等有空研究下
自动化测试学习交流群:670250199