selenium元素定位

1.driver.find_element_by_id("id_vaule")

2.driver.find_element_by_name("name_vaule")  :通过name定位元素:因为name属性可能存在重名的情况,如果重名的话会优先定位该name值第一次出现的元素,可能就不是我们的目标元素

3.driver.find_element_by_class_name("class_name") :通过class_name定位元素:不建议使用,原因html源码中,类样式会同时在多个元素上面使用

4.driver.find_element_by_tag_name("tag_name_vaule")

5.driver.find_element_by_link_text("text_vaule") :需传全部文本内容

  driver.find_element_by_partial_link_text("text_vaule"):可以传入部分文本内容

通过link定位:通过链接定位,仅限于a标签

6.xpath定位方法

6.1 绝对路径定位
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[3]/a[3]').click()
6.2 相对路径定位  建议使用

driver.find_element_by_xpath("//form/span/input").send_keys("金田一少年事件簿")

6.3 使用元素属性来定位

# and 和 or完成通过多个属性值定位
# driver.find_element_by_xpath('//*/div[3]/a[3]').click() #或者//*[@id="s-top-left"]/a[3]
# driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']").send_keys('哈哈')
# driver.find_element_by_xpath("//input[@id='kw' or @class='s_ipt']").send_keys('哈哈')
# 可以使用 * 来代替我们不知道的内容
driver.find_element_by_xpath("//*[@id='kw']").send_keys("金田一少年事件簿")

6.4 通过部分属性值定位

# starts-with(@属性名, '匹配开头') 方法
driver.find_element_by_xpath("//*[starts-with(@name, 'tj_trm')]").click()
# substring(@属性名, 开始位置, 截取长度)
driver.find_element_by_xpath("//*[substring(@name, 7)='ideo']").click() #9:指的是从第9个字符开始到最后(包括第9位)
# contains()
driver.find_element_by_xpath("//*[contains(@name, 'tie')]").click()
6.5 使用文本定位       //*[text()='文本值']
driver.find_element_by_xpath("//a[text()='新闻']").click()
driver.find_element_by_xpath("//a[contains(text(),'hao')]").click() #根据文本内容模糊查找

7.css定位方法

#7.1:绝对路径
driver.find_element_by_xpath('html body div[1] div[1] div[3] a[3]').click()
#7.2 相对路径定位
# driver.find_element_by_css_selector('#kw').send_keys('哈哈')
# driver.find_element_by_css_selector('span input.s_ipt').send_keys('哈哈')

#7.3 使用元素属性定位
# driver.find_element_by_css_selector("input[class='s_ipt']").send_keys('哈哈')
# driver.find_element_by_css_selector("input[class='s_ipt'][maxlength='255']").send_keys('哈哈')

#7.4 使用部分属性值来匹配
# driver.find_element_by_css_selector("input[class^='s_i']").send_keys('哈哈') # 属性值以什么开头
# driver.find_element_by_css_selector("input[class$='_ipt']").send_keys('哈哈') #属性值以什么结尾
# driver.find_element_by_css_selector("input[class*='_ipt']").send_keys('哈哈') #属性值包含

#7.5 出查询子元素
# driver.find_element_by_css_selector("div#s-top-left a:first-child").click() 子元素第一个
# print(driver.find_element_by_css_selector("div#s-top-left a:last-child").click()子元素第二个
# driver.find_element_by_css_selector("div#s-top-left a:nth-child(3)").click() 第n个子元素

#7.6 查询兄弟元素
driver.find_element(By.CSS_SELECTOR,'div#s-top-left a+a').click()
elements = driver.find_elements(By.CSS_SELECTOR,'div#s-top-left a~a')
for ele in elements:
print(ele.text)
 

 

  

 

  

posted @ 2020-05-12 14:44  joy小羲  阅读(96)  评论(0编辑  收藏  举报