学习小结:
这里使用ChromeV73+web driver 2.46
1 1 #几种定位方式: 2 2 #Autotest.py 3 3 from selenium import webdriver 4 4 from selenium.webdriver.common.by import By 5 5 import time 6 6 7 7 dr = webdriver.Chrome() 8 8 dr.get("http://www.baidu.com") 9 9 1010 #通过各种元素:name,id,class,tag,text 1111 1212 dr.find_element_by_name('wd').send_keys('apple') #name 1313 dr.find_element_by_id('su').click #id 1414 dr.find_element_by_class_name('s_ipt').send_keys('apple') #class 1515 dr.find_element_by_tag_name('') #tag 1616 dr.find_element_by_link_text('新闻').click() #通过文字链接打开下级页面 1717 dr.find_element_by_partial_link_text('一段很长的').click()#通过长文字的一部分定位元素 1818 1919 2020 #从一组相同标签的元素里找到目标元素 2121 inputs = dr.find_elements_by_tag_name('input') 2222 for i in inputs: 2323 if i.get_attribute('name') == "wd": 2424 i.send_keys('apple') 2525 dr.find_element_by_id('su').click() 2626 2727 2828 #xpath定位元素: 2929 dr.find_element_by_xpath("//input[@id='kw']").send_keys("天气") #xpath定位元素:input下面: id='kw' 3030 dr.find_element_by_xpath("//*[@id='kw']").send_keys("天气") #xpath定位元素:*=查找所有元素: id='kw' 3131 3232 #父标签form,id='form' 下面第1个标签/span下面第1个/input(如果要定位的span是第二个则为/span[2]) 3333 dr.find_element_by_xpath("//form[@id='form']/span[1]/input[1]").send_keys("天气") #这里【1】可以省略,只是为了理解 3434 3535 dr.find_element_by_xpath("/html/body/div/div/div/div/div/form/span/input").send_keys('天气') #xpath: 绝对路径定位元素 3636 3737 #css选择器定位: 3838 dr.find_element_by_css_selector('.s_ipt').send_keys("天气") #.class 3939 dr.find_element_by_css_selector('#kw').send_keys("天气") #ID 4040 dr.find_element_by_css_selector('input[maxlength="255"]').send_keys("天气") 4141 4242 #下面这个意思是css定位:标签form(.表示class)class='fm' 下面的子标签span 的 子标签 input的 id='kw'(#表示id) 4343 dr.find_element_by_css_selector('form.fm > span > input#kw').send_keys("天气") 4444 4545 4646 #By类定位,需要引入By类 4747 #dr.find_element(By.ID,'kw').send_keys('天气') 4848 #dr.find_element(By.NAME,'wd').send_keys('天气') 4949 #dr.find_element(By.CLASS_NAME,'s_ipt').send_keys('天气') 5050 #dr.find_element(By.TAG_NAME,'input').send_keys('天气') #这里定位不到,需要类似上面的for循环 5151 #dr.find_element(By.LINK_TEXT,u'新闻').click() 5252 #dr.find_element(By.PARTIAL_LINK_TEXT,u'新').click() 5353 #dr.find_element(By.XPATH,"//*[@class='s_ipt']").send_keys('天气') 5454 #dr.find_element(By.CSS_SELECTOR,'form.fm > span > input#kw').send_keys('天气') 5555 5656 time.sleep(3) 5757 dr.quit() 5858 5959
