‘‘‘
驱动东西
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
....等
访谒页面
browser = webdriver.Chrome()
browser.get(‘https://www.taobao.com‘)
print(browser.page_source) 打印源码
browser.close() *游览器
查找元素
单个元素
from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘https://www.taobao.com‘)
# 4 种方法等价
input_by_id = browser.find_element(By.ID,‘q‘) 查找id 为q By.ID,By.CSS_SELECTOR
input_first = browser.find_element_by_id(‘q‘) 查找id 为q
input_second = browser.find_element_by_css_selector(‘#q‘) jq的要领查找id="q"
input_third = browser.find_element_by_xpath(‘//*[@id="q"]‘)
print(input_first, input_second, input_third)
browser.close()
查找多个元素
from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘https://www.taobao.com‘)
# 第一
lis = browser.find_elements_by_css_selector(‘.service-bd li‘) # 选择service-bd 下的 li元素
# 2
lis = browser.find_elements(By.CSS_SELECTOR,‘.service-bd li‘) # 等价的
print(lis)
browser.close()
...
find_elements_by_name
find_elements_by_xpath
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
元素交互操纵
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()
执行javascript
from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘https://zhihu.com/explore‘)
browser.execute_script(‘window.scrollTo(0,document.body.scrollHeight)‘)
browser.execute_script(‘alert(‘To Botton‘)‘)
获取属性
logo = browser.find_element_by_id(‘zh-top‘)
print(logo)
print(logo.get_attribute(‘class‘)) # 打印class属性
获取文本值
input = browser.find_element_by_class_name(‘zu-top‘)
print(input.text)
获取ID,位置,标签名,巨细
input.id
input.location # {y:‘‘,x:‘‘}
input.tag_name # button
input.size
# {‘height‘: 22,‘width‘:11}
‘‘‘
#
元素交互操纵
‘‘‘
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get(‘https://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()
‘‘‘
# 执行javascript
‘‘‘
from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘https://zhihu.com/explore‘)
# 滚到底部
browser.execute_script(‘window.scrollTo(0,document.body.scrollHeight)‘)
# 弹框
browser.execute_script(‘alert("I love You")‘)
‘‘‘
# iFrame 切换使用(页面内的iframe)
‘‘‘
import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
browser = webdriver.Chrome()
url = ‘?filename=jqueryui-api-droppable‘
browser.get(url)
browser.switch_to.frame(‘iframeResult‘) # 切换到这个iframe
source = browser.find_element_by_css_selector(‘#draggable‘)
print(source)
try:
# 在网页的iframe中不能 查找当前iframe之外的元素,需要切换
logo = browser.find_element_by_class_name(‘logo‘)
# except:
except NoSuchElementException as e:
print(‘No Logo‘)
# 切换iframe (切换到父iframe)
browser.switch_to.parent_frame()
logo = browser.find_element_by_class_name(‘logo‘)
print(logo)
print(logo.text)
‘‘‘
# 期待...
# 隐士期待
‘‘‘
from selenium import webdriver
browser = webdriver.Chrome()
browser.implicitly_wait(10) # 当没有找到元素,会等10秒在进行查找,如果有就不会等
browser.get(‘https://www.zhihu.com/explore‘)
input = browser.find_element_by_class_name(‘zu-top-add-question‘)
print(input)
‘‘‘
# 显示期待
‘‘‘
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Chrome()
browser.get(‘https://www.taobao.com‘)
wait = WebDriverWait(browser, 10)
input = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ‘.btn-search‘)))
print(input)
‘‘‘
‘‘‘ 显示期待的条件
title_is 标题是某内容
title_contains 标题包罗某内容
presence_of_element_located((By.ID,‘p‘)) 元素加载出,传入定位元组, (By.ID,‘p‘)
visibility_of_element_located 元素可见,传入定位元组
visibility_of 可见,传入元素东西
presence_of_all_elements_located 所有元素加载出
text_to_be_present_in_element 某个元素文本包罗某个字
text_to_be_present_in_element_value 某个元素值包罗某个字
frame_to_be_available_and_switch_to_it ifram加载并切换
invisibility_of_element_located 元素不偏见
element_to_be_clickable 元素可点击
staleness_of 判断一个元素是否仍在DOM,可判断页面是否已经刷新
element_to_be_selected 元素可选择,传入定位元组
element_located_to_be_selected 元素可选择,传入定位元组
element_selection_state_to_be 传入元素东西以及状态, 相等返回True,否则返回False
element_located_selection_state_to_be 传入定位元组以及状态,相等返回True,否则返回False
alert_is_present 是否呈现Alert
‘‘‘
# 游览器前进撤退退却
‘‘‘
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘https://www.baidu.com‘)
browser.get(‘https://www.taobao.com‘)
browser.get(‘https://www.python.org‘)
browser.back() # 撤退退却
time.sleep(1)
browser.forward() # 前进
browser.close()
‘‘‘
# cookie 获取和设置
‘‘‘
from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘https://www.zhihu.com/explore‘)
# 获取
print(browser.get_cookies())
# 添加
browser.add_cookie({‘name‘: ‘name‘,‘domain‘:‘‘,‘value‘:‘germey‘})
print(browser.get_cookies())
# 删除
browser.delete_all_cookies()
print(browser.get_cookies())
‘‘‘
# 选项卡(打开多个页面)
‘‘‘
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘https://www.baidu.com‘)
browser.execute_script(‘window.open()‘)
print(browser.window_handles) # 当前有几个游览器窗口
browser.switch_to_window(browser.window_handles[1]) # 切换第二个
browser.get(‘https://www.taobao.com‘)
time.sleep(1)
browser.switch_to_window(browser.window_handles[0]) # 切换第一个
browser.get(‘https://python.org‘)
‘‘‘
# 异常措置惩罚惩罚
‘‘‘
id不存在异常
from selenium import webdriver
from selenium.common.exceptions import TimeoutException, NoSuchElementException
browser = webdriver.Chrome()
try:
browser.get(‘https://www.baidu.com‘)
except TimeoutException:
print(‘Time out‘)
try:
browser.find_element_by_id(‘hello‘)
except NoSuchElementException:
print("No Element")
finally:
browser.close()
‘‘‘
from multiprocessing import Pool
相关文章
- 如何使用Selenium Webdriver下载任何文件并将其保存到所需位置
- Expo大作战(三十七)--expo sdk api之 GLView,GestureHandler,Font,Fingerprint,DeviceMotion,Brightness
- c#调用API的CreateFontIndirect设置字体,编译提示“值不在预期范围”求解?
- Java的字体类详解(Font)-摘自Java API文档
- 基于ArcGIS API for Javascript的地图编辑工具
- mysql5.7安装配置,常用命令,常见问题
- 在cocoa应用程序中从GPS设备(USG-MR350)获取位置数据的API /方法?
- 腾讯出品小程序自动化测试框架【Minium】系列(五)API详解(中)
- 尝试使用Java6API读取java代码
- Oracle数据库常用设置积累