一、元素定位方式 ①id定位 ②name定位 ③class定位--- 一般用于定位定位多个元素 ④tag_name(元素名)定位 ---一般用于定位多个元素 ⑤link_text 根据超链接元素的文本进行定位,必须完全匹配 ⑥partail_link_text 根据超链接元素的文本进行定位,模糊匹配 ⑦xpath 根据元素的路径进行定位,包括绝对路径和相对路径 ⑧css定位 根据元素的样式进行定位 二、实际应用 ①from selenium import webdriver from time import sleep driver = webdriver.Chrome() 定位单个元素 #根据id定位元素 input = driver.find_element_by_id(‘kw’) #根据name定位元素 input = driver.find_element_by_name(‘wd’) #根据class定位 input = driver.find_element_by_class_name(‘s_ipt’) #写入文本 input.send_keys(‘货拉拉’) #根据id定位“百度一下” btn = driver.find_element_by_id(‘su’) #根据class进行定位 btn = driver.find_element_by_class_name(‘s_btn’) #单击“百度一下” btn.click() sleep(3) #定位“新闻” driver.find_element_by_link_text(‘新闻’).click # 定位“直播” driver.find_element_by_partail_text(‘播’).click # 定位多个元素 # find_element_by_xxx返回的是一个列表,如果没有合适的元素,则返回一个空列表 inputs = driver.find_elements_by_tag_name(‘input’) print(inputs) ②元素定位方式 xpath from selenium import webdriver from time import sleep try: driver = webdriver.Chrome() #定位搜搜框 #绝对路径 以 / 开始 driver.find_element_by_xpath(‘/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input’).send_keys(‘货拉拉’) # 相对路径 以 // 开始 @ 表示属性 driver.find_element_by_xpath(‘//*[@id = “kw”]).send_keys(‘货拉拉’) driver.find_element_by_xpath(‘//input[@id = “kw”]).send_keys(‘货拉拉’) driver.find_element_by_xpath(‘//input[@class = “s_ipt”]).send_keys(‘货拉拉’) driver.find_element_by_xpath(‘//form[@id = “form”]/span[1]/input).send_keys(‘货拉拉’) driver.find_element_by_xpath(‘//input[@id = “su”]’).click() driver.find_element_by_xpath(‘//form[@id=”form”]/span[2]/input).click() except Exception as e: print(e) finally: sleep(3) driver.close() 文本定位 文本是定位于开始标签与结束标签之间的文字 text()获取文本的元素 定位贴吧 ——精确匹配 driver.find_element_by_xpath(‘//a[text()= “贴吧”).click() 定位 设置 driver.find_element_by_xpath(‘//soan[text()= “设置”).click() 模糊匹配 driver.find_element_by_xpath(‘//*[contains(text(),”度热榜”)]’).click() 属性定位 - 模糊匹配 driver.find_element_by_xpath(‘//input[contains(@value,”一下”)]’).click() css 定位 --层叠样式 driver.find_element_by_css_selector(‘#kw’).send_keys(‘货拉拉’)
|