Python Selenium库

Selenium库:
自动化测试工具,支持多种浏览器,爬虫中主要用来解决javaScript渲染问题

驱动的安装参考这个:https://www.cnblogs.com/FBGG/p/9732281.html(转载—心一先)
生)

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

browser=webdriver.Chrome() #声明浏览器对象
try:
    browser.get('https://baidu.com')  #网站
    input=browser.find_element_by_id('kw')
    input.send_keys('Python')
    input.send_keys(Keys.ENTER)
    wait=WebDriverWait(browser,10)
    wait.until(EC.presence_of_element_located((By.ID,'content_left')))
    print(browser.current_url)
    print(browser.get_cookies())
    print(browser.page_source)
finally:
    browser.close()

声明浏览器对象

from selenium import webdriver
browser=webdriver.Chrome() #声明浏览器对象

访问页面

from selenium import webdriver

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')
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()

通用方法:browser.find_element(By.ID,‘q’)
多个元素
在element中多加一个s变成elements

from selenium import webdriver

browser=webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first=browser.find_elements_by_css_selector('.service-bd li')
print(input_first) #用索引可以获取单个元素
browser.close()

元素交互操作

from selenium import webdriver
import time

browser=webdriver.Chrome()

browser.get('https://www.taobao.com')
input_first=browser.find_element_by_id('q')#找到id为q的
input_first.send_keys('ipone')#添加字符串iphone
time.sleep(1)#停一秒
input_first.clear()#清理
input_first.send_keys('ipad')
button=browser.find_element_by_class_name('btn-search')
button.click()#按下按钮
browser.close()
具体查看API手册

交互动作(与元素交互操作不同)

将动作附加到动作链中串行执行

拖拽操作

from selenium import webdriver
from selenium.webdriver import ActionChains
import time

browser=webdriver.Chrome()
url='http://www/runoob.com/try.php?filename=jqueryui-api-aroppable'
browser.get(url)
browser.switch_to.frame('iframeResult')
source=browser.find_element_by_css_selector('#draggable')
target=browser.find_element_by_css_selector('#draggable')
actions=ActionChains(browser)
actions.drag_and_drop(source,target)
actions.perform()

更详细查看API

执行JavaScript

万能方法,其他方法行不通可以试一下这个

from selenium import webdriver

browser=webdriver.Chrome()

browser.get('https://www.zhihu.com/explore')
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_script('alert("To Bottom")')

获取元素信息

获取属性

猜你喜欢

转载自blog.csdn.net/SeeUa/article/details/88701713
今日推荐