python selenium API 常用方法

匿名 (未验证) 提交于 2019-12-02 22:51:30


  1. 本文以 chrome 为主 ,放在scripts目录下
    所有版本的 ChromeDriver

  1. 简明 Python 教程
  2. Python教程 - 廖雪峰
  3. Selenium with Python

haosou.com

 1 #coding=utf-8  2 from selenium import webdriver  3 import os  4 import time  5 # set little time stop and big time stop for viewing changes  6 little_time_stop = 1  7 big_time_stop = 2  8 # 默认广告条数  9 ads_num_require = 8 10 # 请求连接 11 req_url = "http://www.haosou.com/s?ie=utf-8&shb=1&src=360sou_newhome&q=%E9%B2%9C%E8%8A%B1" 12 # 打开浏览器 13  14 browser = webdriver.Chrome() 15 # 开始请求 16 17 browser.get(req_url) 18 # 获取所有的广告 19  20 all_ads_li = browser.find_elements_by_css_selector('#e_idea_pp li') 21 # 当前广告条数 22 ads_num_current = len(all_ads_li) 23 print "Has been got %d ads" %(ads_num_current) 24 # 如果广告条数与默认不符 25 if ads_num_current < ads_num_require: 26     print "The number of ads is not enough ( current : %d require: %d)" %(ads_num_current,ads_num_require) 27     # exit() 28 # 获取顶部连接 29 i = 0 30 for ads_li in all_ads_li: 31     time.sleep(big_time_stop) 32     i = i+1 33     print "ads %d :" %i 34     try: 35         main = ads_li.find_element_by_css_selector('h3 a') 36     except: 37         print "\tError: ads %d cann't find" %(i) 38     else: 39         print "\tReady: visit ads %d" %(i) 40         main.click() 41         print "\tSucess: visit ads %d" %(i) 42         time.sleep(little_time_stop) 43     try: 44         img_link = ads_li.find_element_by_class_name('e_biyi_img') 45     except: 46         print "\tError : no img in ads %d " %(i) 47     else: 48         print "\tReady : visit img_link %d" %(i) 49         img_link.click() 50         print "\tSuccess : visit img_link %d" %(i) 51         time.sleep(little_time_stop) 52     try: 53         child_div = ads_li.find_element_by_class_name('e_biyi_childLink'); 54     except: 55         print "\tError : no child link in ads %d" %(i) 56     else: 57         try: 58             child_links = child_div.find_elements_by_css_selector('a') 59         except: 60             print "\tError : find child_links error" 61         else: 62             num_links = len(child_links) 63             print "\tSuccess : there are %d child_links" %(num_links) 64             j = 0 65             for child_a in child_links: 66                 j = j + 1 67                 print "\t\tReady : visit child link %d in ads %d" %(j, i) 68                 child_a.click() 69                 print "\t\tSuccess : visit child link %d in ads %d" %(j, i) 70                 time.sleep(little_time_stop) 71 print "End and thanks for your using!" 72 # 下面代码选择取消注释 73 # 延时 74 # time.sleep(5) 75 # 关闭当前窗口 76 # browser.close() 77 # 关闭所有已经打开的窗口 78 # browser.quit()

以下是所有定位操作的 API :

返回一个匹配元素, 即一个 WebElement 元素
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
返回一个列表, 包含所有匹配的元素, 即一个 WebElement 列表
find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

使用的时候需注意下面几点 :

  1. WebDriverWebElement
    这两种对象都可以使用这些 API

  2. try: .. except: ...
  3. WebDriver
    WebElement查找当前元素的子元素

WebDriverbrowser

  1. # 请求连接
  2. req_url = "http://www.haosou.com/s?ie=utf-8&shb=1&src=360sou_newhome&q=%E9%B2%9C%E8%8A%B1"
  3. # 打开浏览器
  4. browser = webdriver.Chrome()
  5. # 开始请求
  6. browser.get(req_url)

接着, 就可以使用异常 API 进行当前页面的全局查找, 比如 :

  1. # 获取所有的广告
  2. all_ads_li = browser.find_elements_by_css_selector('#e_idea_pp li')
  1. browser.find_element_by_xx()WebElement
    使用获得的实例调用上面的 API 即可进行层级查找

  2. browser.find_elements_by_xx()WebElement
    通过对 list 的遍历, 即可对各个实例进行相应的操作

  1. browser.curren_url
  2. browser.close()
  3. browser.quit()
  4. browser.add_cookie(cookie_dict)
    browser.get_cookie(name)
    browser.get_cookies()

    driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’, ‘secure’:True}) 
  5. browser.delete_all_cookies()
    browser.delete_cookie(name)

  6. browser.back()
  7. browser.forward()
  8. browser.execute_script(script, *args)
    browser.execute_async_script(script, *args)
  9. browser.get(url)
  10. browser.refresh()
  11. browser.current_window_handle
  12. browser.window_handles
  13. browser.switch_to_window(window_handle)
  14. browser.title
  15. browser.name
  1. webEle.clear()
  2. webEle.click()
  3. webEle,is_displayed()
  4. webEle.is_enabled()
  5. webEle.is_selected()
  6. webEle.send_keys(*value)
  7. webEle.submit()
  8. webEle.tag_name
  9. webEle.text
  10. webEle.get_attribute(name)

注意 本文转自 https://www.zybuluo.com/mwumli/note/222253


  1. 本文以 chrome 为主 ,放在scripts目录下
    所有版本的 ChromeDriver

  1. 简明 Python 教程
  2. Python教程 - 廖雪峰
  3. Selenium with Python

haosou.com

 1 #coding=utf-8  2 from selenium import webdriver  3 import os  4 import time  5 # set little time stop and big time stop for viewing changes  6 little_time_stop = 1  7 big_time_stop = 2  8 # 默认广告条数  9 ads_num_require = 8 10 # 请求连接 11 req_url = "http://www.haosou.com/s?ie=utf-8&shb=1&src=360sou_newhome&q=%E9%B2%9C%E8%8A%B1" 12 # 打开浏览器 13  14 browser = webdriver.Chrome() 15 # 开始请求 16 17 browser.get(req_url) 18 # 获取所有的广告 19  20 all_ads_li = browser.find_elements_by_css_selector('#e_idea_pp li') 21 # 当前广告条数 22 ads_num_current = len(all_ads_li) 23 print "Has been got %d ads" %(ads_num_current) 24 # 如果广告条数与默认不符 25 if ads_num_current < ads_num_require: 26     print "The number of ads is not enough ( current : %d require: %d)" %(ads_num_current,ads_num_require) 27     # exit() 28 # 获取顶部连接 29 i = 0 30 for ads_li in all_ads_li: 31     time.sleep(big_time_stop) 32     i = i+1 33     print "ads %d :" %i 34     try: 35         main = ads_li.find_element_by_css_selector('h3 a') 36     except: 37         print "\tError: ads %d cann't find" %(i) 38     else: 39         print "\tReady: visit ads %d" %(i) 40         main.click() 41         print "\tSucess: visit ads %d" %(i) 42         time.sleep(little_time_stop) 43     try: 44         img_link = ads_li.find_element_by_class_name('e_biyi_img') 45     except: 46         print "\tError : no img in ads %d " %(i) 47     else: 48         print "\tReady : visit img_link %d" %(i) 49         img_link.click() 50         print "\tSuccess : visit img_link %d" %(i) 51         time.sleep(little_time_stop) 52     try: 53         child_div = ads_li.find_element_by_class_name('e_biyi_childLink'); 54     except: 55         print "\tError : no child link in ads %d" %(i) 56     else: 57         try: 58             child_links = child_div.find_elements_by_css_selector('a') 59         except: 60             print "\tError : find child_links error" 61         else: 62             num_links = len(child_links) 63             print "\tSuccess : there are %d child_links" %(num_links) 64             j = 0 65             for child_a in child_links: 66                 j = j + 1 67                 print "\t\tReady : visit child link %d in ads %d" %(j, i) 68                 child_a.click() 69                 print "\t\tSuccess : visit child link %d in ads %d" %(j, i) 70                 time.sleep(little_time_stop) 71 print "End and thanks for your using!" 72 # 下面代码选择取消注释 73 # 延时 74 # time.sleep(5) 75 # 关闭当前窗口 76 # browser.close() 77 # 关闭所有已经打开的窗口 78 # browser.quit()

以下是所有定位操作的 API :

返回一个匹配元素, 即一个 WebElement 元素
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
返回一个列表, 包含所有匹配的元素, 即一个 WebElement 列表
find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

使用的时候需注意下面几点 :

  1. WebDriverWebElement
    这两种对象都可以使用这些 API

  2. try: .. except: ...
  3. WebDriver
    WebElement查找当前元素的子元素

WebDriverbrowser

  1. # 请求连接
  2. req_url = "http://www.haosou.com/s?ie=utf-8&shb=1&src=360sou_newhome&q=%E9%B2%9C%E8%8A%B1"
  3. # 打开浏览器
  4. browser = webdriver.Chrome()
  5. # 开始请求
  6. browser.get(req_url)

接着, 就可以使用异常 API 进行当前页面的全局查找, 比如 :

  1. # 获取所有的广告
  2. all_ads_li = browser.find_elements_by_css_selector('#e_idea_pp li')
  1. browser.find_element_by_xx()WebElement
    使用获得的实例调用上面的 API 即可进行层级查找

  2. browser.find_elements_by_xx()WebElement
    通过对 list 的遍历, 即可对各个实例进行相应的操作

  1. browser.curren_url
  2. browser.close()
  3. browser.quit()
  4. browser.add_cookie(cookie_dict)
    browser.get_cookie(name)
    browser.get_cookies()

    driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’, ‘secure’:True}) 
  5. browser.delete_all_cookies()
    browser.delete_cookie(name)

  6. browser.back()
  7. browser.forward()
  8. browser.execute_script(script, *args)
    browser.execute_async_script(script, *args)
  9. browser.get(url)
  10. browser.refresh()
  11. browser.current_window_handle
  12. browser.window_handles
  13. browser.switch_to_window(window_handle)
  14. browser.title
  15. browser.name
  1. webEle.clear()
  2. webEle.click()
  3. webEle,is_displayed()
  4. webEle.is_enabled()
  5. webEle.is_selected()
  6. webEle.send_keys(*value)
  7. webEle.submit()
  8. webEle.tag_name
  9. webEle.text
  10. webEle.get_attribute(name)

注意 本文转自 https://www.zybuluo.com/mwumli/note/222253

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!