学习小结:
这里使用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