Python2+Selenium入门03-元素定位 落日映苍穹つ 2022-03-07 02:40 212阅读 0赞 当我们想让 Selenium 自动地操作浏览器时,就必须告诉 Selenium 如何去定位某个元素或一组元素,每个元素都有着不同的标签名和属性值,Selenium 提供了以下8种定位元素的方式,每种方式对应了2个方法: **find\_element\_by\_**( ),是用来定位单个元素的,**find\_elements\_by\_**( ),是用来定位多个元素的。 * 通过 id 定位 * 通过 name 定位 * 通过 class 定位 * 通过 tag 定位 * 通过 link 定位 * 通过 partial link 定位 * 通过 xpath 定位 * 通过 css 选择器定位 下面以百度首页为例进行举例说明: ### 1.通过 id 定位 ### find\_element\_by\_id(id) find\_elements\_by\_id(id) # _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位id为“kw”的元素 input_text = driver.find_element_by_id("kw") input_text.send_keys("selenium") driver.quit() ### 2.通过通过 name 定位 ### find\_element\_by\_name(name) find\_elements\_by\_name(name) # _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位name为“wd”的元素 input_text = driver.find_element_by_name("wd") input_text.send_keys("selenium") driver.quit() ### 3.通过 class 定位 ### find\_element\_by\_class\_name(name) find\_elements\_by\_class\_name(name) # _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位class名称为“s_ipt”的元素 input_text = driver.find_element_by_class_name("s_ipt") input_text.send_keys("selenium") driver.quit() ### 4.通过 tag 定位 ### find\_element\_by\_tag\_name(name) find\_elements\_by\_tag\_name(name) # _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位标签为<input>的元素 input_text = driver.find_elements_by_tag_name("input") print(len(input_text)) driver.quit() ### 5.通过 link 定位 ### find\_element\_by\_link\_text(link\_text) find\_elements\_by\_link\_text(link\_text) # _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位链接文本完全匹配“我新闻”的元素 news = driver.find_element_by_link_text("新闻") news.click() driver.quit() ### 6.通过 partial link 定位 ### find\_element\_by\_partial\_link\_text(link\_text) find\_elements\_by\_partial\_link\_text(link\_text) # _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位链接文本部分匹配“新”的元素 news = driver.find_element_by_partial_link_text("新") news.click() driver.quit() ### 7.通过 xpath 定位 ### find\_element\_by\_xpath(xpath) find\_elements\_by\_xpath(xpath) # _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # xpath定位,相对路径与属性结合定位搜索框 news = driver.find_element_by_xpath("//input[@id='kw']") news.click() driver.quit() ### 8.通过 css 选择器定位 ### find\_element\_by\_css\_selector(css\_selector) find\_elements\_by\_css\_selector(css\_selector) # _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # css选择器,id定位密码输入框 news = driver.find_element_by_css_selector('#kw') news.click() driver.quit() 这里只是简单介绍了8种元素定位方式的使用,比较简单易用的是通过id、name、class定位,我个人比较喜欢的是用xpath定位,当然,最灵活也是最强大的定位方式就是css,它也是比较难掌握的一种方式。关于xpath和css定位方式的详细介绍,可以参考 [selenium 元素定位][selenium]。 [selenium]: https://www.kancloud.cn/guanfuchang/python_selenium/710818
还没有评论,来说两句吧...