Selenium3+python用几种定位元素的方法

学习小结:

这里使用ChromeV73+web driver 2.46

 1 #几种定位方式:
 2 #Autotest.py
 3 from selenium import webdriver
 4 from selenium.webdriver.common.by import By
 5 import time
 6 
 7 dr = webdriver.Chrome()
 8 dr.get("http://www.baidu.com")
 9 
10 #通过各种元素:name,id,class,tag,text
11 
12 dr.find_element_by_name('wd').send_keys('apple')              #name
13 dr.find_element_by_id('su').click                                     #id
14 dr.find_element_by_class_name('s_ipt').send_keys('apple')   #class
15 dr.find_element_by_tag_name('')                #tag    
16 dr.find_element_by_link_text('新闻').click()                #通过文字链接打开下级页面
17 dr.find_element_by_partial_link_text('一段很长的').click()#通过长文字的一部分定位元素
18 
19 
20 #从一组相同标签的元素里找到目标元素
21 inputs = dr.find_elements_by_tag_name('input')
22 for i in inputs:
23     if i.get_attribute('name') == "wd":
24         i.send_keys('apple')    
25 dr.find_element_by_id('su').click()
26 
27  
28 #xpath定位元素:
29 dr.find_element_by_xpath("//input[@id='kw']").send_keys("天气")     #xpath定位元素:input下面: id='kw'
30 dr.find_element_by_xpath("//*[@id='kw']").send_keys("天气")              #xpath定位元素:*=查找所有元素: id='kw'
31 
32  #父标签form,id='form' 下面第1个标签/span下面第1个/input(如果要定位的span是第二个则为/span[2])
33 dr.find_element_by_xpath("//form[@id='form']/span[1]/input[1]").send_keys("天气")   #这里【1】可以省略,只是为了理解
34 
35 dr.find_element_by_xpath("/html/body/div/div/div/div/div/form/span/input").send_keys('天气')   #xpath: 绝对路径定位元素
36 
37 #css选择器定位:
38 dr.find_element_by_css_selector('.s_ipt').send_keys("天气")      #.class
39 dr.find_element_by_css_selector('#kw').send_keys("天气")       #ID
40 dr.find_element_by_css_selector('input[maxlength="255"]').send_keys("天气")
41 
42 #下面这个意思是css定位:标签form(.表示class)class='fm' 下面的子标签span 的 子标签 input的 id='kw'(#表示id)
43 dr.find_element_by_css_selector('form.fm > span > input#kw').send_keys("天气")
44 
45 
46 #By类定位,需要引入By类
47 #dr.find_element(By.ID,'kw').send_keys('天气')
48 #dr.find_element(By.NAME,'wd').send_keys('天气')
49 #dr.find_element(By.CLASS_NAME,'s_ipt').send_keys('天气')
50 #dr.find_element(By.TAG_NAME,'input').send_keys('天气')      #这里定位不到,需要类似上面的for循环
51 #dr.find_element(By.LINK_TEXT,u'新闻').click()
52 #dr.find_element(By.PARTIAL_LINK_TEXT,u'新').click()
53 #dr.find_element(By.XPATH,"//*[@class='s_ipt']").send_keys('天气')
54 #dr.find_element(By.CSS_SELECTOR,'form.fm > span > input#kw').send_keys('天气')
55 
56 time.sleep(3)
57 dr.quit()
58 
59                     

猜你喜欢

转载自www.cnblogs.com/xier/p/10545156.html