Selenium---重用的定位方法
Posted guo-zhi-jia-123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium---重用的定位方法相关的知识,希望对你有一定的参考价值。
1 from selenium import webdriver 2 import time 3 4 # 打开谷歌浏览器 5 driver = webdriver.Chrome() 6 7 # 在浏览器打开百度网页 8 driver.get("https://www.baidu.com/") 9 10 #延迟两秒 11 time.sleep(2) 12 13 # 使用网页定位方法 14 15 # 使用 id 方法定位页面元素 16 # driver.find_element_by_id(‘kw‘).send_keys(‘路飞‘) 17 # driver.find_element_by_id(‘su‘).click() 18 19 # 使用 class 方法定位元素 20 # driver.find_element_by_class_name(‘s_ipt‘).send_keys(‘路飞‘) 21 # 在这里使用 class 方法定位‘百度一下’按钮会失败 22 # 因为 class_name “bg s_btn” 并不是唯一的名称,他还有子类,报错原因,定位不能使用符合元素 23 # driver.find_element_by_class_name(‘bg s_btn‘) 24 # driver.find_element_by_id(‘su‘).click() 25 26 # 使用 name 方法定位元素 27 # driver.find_element_by_name(‘wd‘).send_keys("路飞") 28 # 因为 百度按钮 没有提供 name 属性,这里采用别的定位方法来实现定位 29 # driver.find_element_by_id(‘su‘).click() 30 31 # 使用 tag 方法定位元素 32 # 定位失败 tag 包含的就是<div><input><a>等,页面这些东西太多了,很难通过tag定位到元素 33 # driver.find_element_by_tag_name("input").send_keys("路飞") 34 35 # 使用link方法定位页面的文本链接(文本链接是需要点击的,所以在后面添加click方法,点击) 36 # driver.find_element_by_link_text(‘新闻‘).click() 37 # driver.find_element_by_link_text(‘地图‘).click() 38 # 使用partial link 方法是定位很长的文本链接的方法,当你使用link方法定位文本链接定位不到的时候 39 # 可以尝试使用 partial link 方法来定位 40 # driver.find_element_by_partial_link_text(‘新闻‘).click() 41 # driver.find_element_by_partial_link_text(‘地图‘).click() 42 # 使用xpath方法定位页面元素 43 # 方法一:利用xpath元素属性定位 44 # driver.find_element_by_xpath(‘//*[@id="kw"]‘).send_keys("路飞") 45 # driver.find_element_by_xpath(‘//*[@id="su"]‘).click() 46 47 # 方法二:使用绝对路径定位元素(实验失败) 48 #driver.find_element_by_xpath(‘html/body/div/div[2]/div/div/div/from/span/input‘).send_keys(‘路飞‘) 49 #driver.find_element_by_xpath("html/body/div/form/input").send_keys(‘路飞‘) 50 51 # 方法三:层级和属性结合 (实验失败) 52 # 这种方法是定位不到元素的时候,定位他的上一级,通过定位上一级来定位想要定位的元素 53 # driver.find_element_by_xpath(‘//span[@class="bg s_ipt_wr quickdelete-wrap"]/input‘).send_keys(‘路飞‘) 54 # driver.find_element_by_xpath(‘//*[@id="su"]‘).click() 55 # 方法四:使用逻辑运算符 (实验失败) 56 # driver.find_element_by_xpath(‘//input[@id="kw" and @class="s_ipt"]/span/input‘).send_keys(‘路飞‘) 57 58 # CSS 方法定位 59 # 1、通过class属性定位 60 # driver.find_element_by_css_selector(‘.s_ipt‘).send_keys(‘路飞‘) 61 # 定位百度一下按钮失败 62 # driver.find_element_by_css_selector(".bg s_btn").click() 63 64 # 2、使用 id 属性定位 65 # driver.find_element_by_css_selector(‘#kw‘).send_keys(‘路飞‘) 66 # driver.find_element_by_css_selector(‘#su‘).click() 67 68 # 3、使用签名来定位元素,因为签名的重复率太高了,很难定位到元素,我这里定位失败了 69 # driver.find_element_by_css_selector("input").send_keys("路飞") 70 # 3.1、通过父子级关系来定位元素 71 # driver.find_element_by_css_selector("span>input").send_keys("路飞") 72 # 定位 百度一下 的时候,因为标签重复不能靠父子级关系定位元素 73 # driver.find_element_by_css_selector("span>input").click() 74 # 3.2、通过属性来定位元素 75 # driver.find_element_by_css_selector("[id=‘kw‘]").send_keys("路飞") 76 # driver.find_element_by_css_selector("[id=‘su‘]").click() 77 # 3.2、通过组合来定位元素 78 # driver.find_element_by_css_selector("form.fm>span>input.s_ipt").send_keys("路飞") 79 # 通过组合定位元素失败 80 # driver.find_element_by_css_selector("form.fm>span.bg s_btn_wr>input.bg s_btn").click() 81 82 # 使用By方法定位元素 83 # 该方法就是统一调用 find_element 方法,只需要传入具体的参数: 84 # 网上查资料补充 85 86 87 time.sleep(2) 88 89 # 退出浏览器 90 driver.quit()
以上是关于Selenium---重用的定位方法的主要内容,如果未能解决你的问题,请参考以下文章