1. 基本使用
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.support.wait import WebDriverWait
- brower = webdriver.Chrome()
- try:
- brower.get('https://www.baidu.com')
- input = brower.find_element_by_id('kw')# 查找 id 为 kw 的元素
- input.send_keys('Python')# 向 input 文本框输入 python
- input.send_keys(Keys.ENTER)# 输入回车
- wait = WebDriverWait(brower,10)# 等待浏览器加载
- wait.until(EC.presence_of_element_located((By.ID,'content_left')))# 查找 id 为 content--left 的对象
- print(brower.current_url)# 输出当前的 url
- print(brower.get_cookies())# 输出当前的 cookies
- print(brower.page_source)# 输出当前的网页源码
- finally:
- brower.close()
2. 声明浏览器对象
- from selenium import webdriver
- brower = webdriver.Chrome()
- brower = webdriver.Firefox()
- brower = webdriver.Edge()
- brower = webdriver.PhanromJS()
- brower = webdriver.Safari()
3. 访问页面
- from selenium import webdriver
- brower = webdriver.Chrome()
- brower.get('https://ww.taobao.com')
- print(brower.page_source)
- brower.colse()
4. 查找元素
单个元素
- from selenium import webdriver
- browser = webdriver.Chrome()
- browser.get('https://www.taobao.com')
- input_first=browser.find_element_by_id('q')
- input_second = browser.find_element_by_CSS_selector('#q')
- input_third = browser.find_element_by_xpath('//*[@id="q"]')
- print(input_first,input_second,input_third)
- browser.close()
结果:
- <selenium.webdriver.remote.webelement.WebElement (session="aafcd8308ef345a4014a0db417267640", element="0.8704970628206692-1")> <selenium.webdriver.remote.webelement.WebElement (session="aafcd8308ef345a4014a0db417267640", element="0.8704970628206692-1")> <selenium.webdriver.remote.webelement.WebElement (session="aafcd8308ef345a4014a0db417267640", element="0.8704970628206692-1")>
- from selenium import webdriver from selenium.webdriver.common.by
- import By browser = webdriver.Chrome()
- browser.get('https://www.taobao.com')
- input_first=browser.find_element(By.ID,'q')
- print(input_first) browser.close()
结果:
<selenium.webdriver.remote.webelement.WebElement (session="ad3663f850d6c3fd81751c5c8cf45511", element="0.6365953152365587-1")>
多个元素
- from selenium import webdriver
- browser = webdriver.Chrome()
- browser.get('https://www.taobao.com')
- list=browser.find_elements_by_css_selector('.service-bd li')
- print(list)
- browser.close()
- from selenium import webdriver
- browser = webdriver.Chrome()
- browser.get('https://www.taobao.com')
- list=browser.find_elements(By.CSS_SELECTOR,'.service-bd li')
- print(list)
- browser.close()
5. 元素交互操作
- from selenium import webdriver
- import time
- browser = webdriver.Chrome()
- browser.get('https://www.taobao.com')
- input=browser.find_element_by_id('q')
- input.send_keys('iPhone')
- time.sleep(1)
- input.clear()
- input.send_keys('iPad')
- button = browser.find_element_by_class_name('btn-search')
- button.click()
6. 交互动作
- from selenium import webdriver
- from selenium.webdriver import ActionChains
- brower=webdriver.Chrome()
- url="https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
- brower.get(url)
- brower.switch_to.frame('iframeResult')
- source=brower.find_element_by_css_selector('#draggable')
- target=brower.find_element_by_css_selector('#droppable')
- action=ActionChains(brower)
- action.drag_and_drop(source,target)
- action.perform()
7. 执行 JavaScript
- from selenium import webdriver
- brower = webdriver.Chrome()
- brower.get('https://www.zhihu.com/explore')
- brower.execute_script('window.scrollTo(0,document.body.scrollHeight)')
- brower.execute_script('alert("To Bottom")')
8. 获取属性
- from selenium import webdriver
- from selenium.webdriver import ActionChains
- brower = webdriver.Chrome()
- url='https://www.zhihu.com/explore'
- brower.get(url)
- logo = brower.find_element_by_id('zh-top-link-logo')
- print(logo)
- print(logo.get_attribute('class'))
获取:
- <selenium.webdriver.remote.webelement.WebElement (session="5578b6070e5cd404d5636c6c15d1062e", element="0.2337143497044789-1")>
- zu-top-link-logo
9. 获取文本值
- from selenium import webdriver
- brower = webdriver.Chrome()
- url='https://www.zhihu.com/explore'
- brower.get(url)
- input=brower.find_element_by_class_name('zu-top-add-question')
- print(input.text)
结果:
提问
10. 获取 ID, 位置, 标签名, 大小
- from selenium import webdriver
- brower = webdriver.Chrome()
- url='https://www.zhihu.com/explore'
- brower.get(url)
- input=brower.find_element_by_class_name('zu-top-add-question')
- print(input.id)
- print(input.location)
- print(input.tag_name)
- print(input.size)
结果:
- 0.5790966028649505-1
- {'x': 760, 'y': 7}
- button
- {'height': 32, 'width': 66}
- 11.Frame
- import time
- from selenium import webdriver
- from selenium.common.exceptions import NoSuchElementException
- brower = webdriver.Chrome()
- url="https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
- brower.get(url)
- brower.switch_to.frame('iframeResult')
- source=brower.find_element_by_css_selector('#draggable')
- print(source)
- try:
- logo=brower.find_element_by_class_name('logo')
- except NoSuchElementException:
- print('No Logo')
- brower.switch_to.parent_frame()
- logo=brower.find_element_by_class_name('logo')
- print(logo)
- print(logo.text)
结果:
- <selenium.webdriver.remote.webelement.WebElement (session="4515a548a628f32ec7ebb86b845cafbc", element="0.47138378750440957-1")>
- No Logo
- <selenium.webdriver.remote.webelement.WebElement (session="4515a548a628f32ec7ebb86b845cafbc", element="0.590628320406164-2")>
- RUNOOB.COM
12. 隐式等待
- from selenium import webdriver
- brower = webdriver.Chrome()
- brower.get('https://www.zhihu.com/explore')
- brower.implicitly_wait(10)
- input=brower.find_element_by_class_name('zu-top-add-question')
- print(input)
结果:
<selenium.webdriver.remote.webelement.WebElement (session="df8f8bebb2cf5356c12442f1bcc5c2f7", element="0.40275892523916035-1")>
13. 显示等待
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.support.wait import WebDriverWait
- brower = webdriver.Chrome()
- brower.get('https://www.taobao.com')
- wait=WebDriverWait(brower,10)
- input=wait.until(EC.presence_of_element_located((By.ID,'q')))
- button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
- print(input,button)
结果:
<selenium.webdriver.remote.webelement.WebElement (session="036c1bc8fad6ee8e9ee42266ce163be7", element="0.8588910449888032-1")> <selenium.webdriver.remote.webelement.WebElement (session="036c1bc8fad6ee8e9ee42266ce163be7", element="0.8588910449888032-2")>
14. 前进后退
- from selenium import webdriver
- import time
- brower = webdriver.Chrome()
- brower.get('https://www.baidu.com')
- brower.get('https://www.taobao.com')
- brower.get('https://www.python.org')
- brower.back()
- time.sleep(1)
- brower.forward()
- brower.close()
- 15.Cookies
- from selenium import webdriver
- brower = webdriver.Chrome()
- brower.get('https://www.zhihu.com/explore')
- print(brower.get_cookies())
- brower.add_cookie({'name':'name','domain':'www.zhihu.com','value':'germey'})
- print(brower.get_cookies())
- brower.delete_all_cookies()
- print(brower.get_cookies())
16. 选项卡管理
- import time
- from selenium import webdriver
- brower = webdriver.Chrome()
- brower.get('https://www.baidu.com')
- brower.execute_script('window.open()')
- print(brower.window_handles)
- brower.switch_to_window(brower.window_handles[1])
- brower.get('https://www.taobao.com')
- time.sleep(1)
- brower.switch_to_window(brower.window_handles[0])
- brower.get('https://www.python.org')
结果:
['CDwindow-4971CB8E7903DFAE9CBA82A6A5F05DB2', 'CDwindow-652D8829B41E67E7F7E8C2E146F8C353']
17. 异常处理
- from selenium import webdriver
- brower=webdriver.Chrome()
- brower.get('https://www.baidu.com')
- brower.find_element_by_id('hello')
- from selenium import webdriver
- from selenium.common.exceptions import TimeoutException,NoSuchElementException
- brower=webdriver.Chrome()
- try:
- brower.get('https://www.baidu.com')
- except TimeoutException:
- print('Time Out')
- try:
- brower.find_element_by_id('hello')
- except NoSuchElementException:
- print('No Element')
- finally:
- brower.close()
结果:
No Element
来源: http://www.bubuko.com/infodetail-2769869.html