码迷,mamicode.com
首页 > 其他好文 > 详细

Selenium 库的基本用法

时间:2018-09-16 15:30:38      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:expec   oca   put   form   ppa   res   加载   选项   hand   

  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

 

Selenium 库的基本用法

标签:expec   oca   put   form   ppa   res   加载   选项   hand   

原文地址:https://www.cnblogs.com/zll20153246/p/9655338.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!