selenium:浏览器自动化的工具
链接: 文档
pip install selenium
import time
from selenium import webdriver
# 取得谷歌浏览器驱动
driver = webdriver.Chrome()
# 打开网页
driver.get('https://www.jd.com/')
# 页面最大化
driver.maximize_window()
# 得到页面大小
print(driver.get_window_size())
# 得到网址
print(driver.current_url)
# 得到所有窗口句柄
print(driver.window_handles)
# 睡5秒,等待
time.sleep(5)
# close driver,resource recovery
driver.quit()
# driver.close() # 关闭页面
driver.find_element(By.XPATH,'XPATH')
driver.find_element(By.CLASS_NAME,'CLASS_NAME')
driver.find_element(By.CSS_SELECTOR,'CSS_SELECTOR')
driver.find_element(By.ID,'ID')
driver.find_element(By.LINK_TEXT,'LINK_TEXT')
driver.find_element(By.PARTIAL_LINK_TEXT,'PARTIAL_LINK_TEXT')
driver.find_element(By.TAG_NAME,'TAG_NAME')
driver.get('https://www.jd.com/')
eli = driver.find_element(By.ID,'key')
eli = driver.find_element(By.LINK_TEXT,'抢大牌好价')
eli.click()
eli = driver.find_element(By.PARTIAL_LINK_TEXT,'牌好价').click()
字符 | 说明 |
---|---|
input | 选择所有input标签,同理,可以选选div等其他标签 |
* | 选择所有元素 |
/ | 从当前开始选择 |
// | 从当前及以下的任意节点选择 |
. | 当前节点 |
… | 父节点 |
@ | 根据属性进行选择 |
[n] | 返回结果的第n项 |
在京东搜索栏里找“奶粉”
eli = driver.find_element(By.XPATH,'//*[@id="key"]').send_keys('奶粉')
eli = driver.find_element(By.XPATH,'//*[@id="search"]/div/div[2]/button').click()
send_keys()
方法clear()
方法click()
方法。因网速等原因,网页未能全部加载而找不到相应元素,需要等待加载完毕,再找查找元素
time.sleep(10)
driver.implicitly_wait(15)
模拟运行JavaScript,此时使用execute_script()
方法即可实现。
driver.execute_script('document.documentElement.scrollTo(0,2000)')
链接: 演示网址
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
# 取得谷歌浏览器驱动
driver = webdriver.Chrome()
url = ''
# 打开网页
driver.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
driver.implicitly_wait(15)
# eli = driver.find_element(By.ID,'key')
# eli = driver.find_element(By.PARTIAL_LINK_TEXT,'牌好价').click()
# eli = driver.find_element(By.LINK_TEXT,'牌好价')
# eli = driver.find_element(By.XPATH,'//*[@id="key"]').send_keys('奶粉')
# eli = driver.find_element(By.XPATH,'//*[@id="search"]/div/div[2]/button').click()
# 如果定位的标签在iframe标签中,需要以下语句,frame的参数可以是iframe标签的id属性
driver.switch_to.frame('iframeResult')
drag_block = driver.find_element(By.XPATH, '//*[@id="draggable"]')
# 创建动作链对象,绑定浏览器
my_action = ActionChains(driver)
# 点击并长按指定标签
my_action.click_and_hold(drag_block)
# 移动标签,perform()表示立即执行
for i in range(6):
my_action.move_by_offset(25,25).perform()
time.sleep(0.5)
# 睡5秒,等待
time.sleep(1)
# 释放动作链对象
my_action.release()
# close driver,resource recovery
# driver.quit()
# driver.close() # 关闭页面