Python-Selenium基本操做

1、简介

selenium一个核心是WebDriver,WebDriver启动目标浏览器,并绑定到指定端口,而后与该端口直接进行通讯。php

安装selenium:css

pip install selenium

在使用的时候可能遇到下面的错误:html

'geckodriver' executable needs to be in PATH
'chromedriver' executable needs to be in PATH

说明须要driver,Firefox能够经过:geckodriver下载python

Chrome要先看一下对应的版本,在Chrome浏览器中输入:git

chrome://version/

chrome-version

而后能够到下面的地址下载对应版本的driver: chromedriver下载1github

chromedriver下载2web

下载以后最后放在path中,对于python来讲,能够放在安装目录的scripts目录下chrome

driver

2、打开连接

from selenium import webdriver

browser = webdriver.Firefox()
# browser = webdriver.Firefox(executable_path=r'C:\soft\lan\python3\Scripts\geckodriver.exe')
# browser = webdriver.Chrome()
browser.get("https://www.baidu.com/index.php?tn=monline_3_dg")

若是driver没有放在path目录中,那么就能够指定了driver的存放路径。npm

3、打开本地文件

from selenium import webdriver

driver = webdriver.Firefox()

file_path = r'file:///F:\tmp\table.html'
driver.get(file_path)

webdriver不单单能够打开本地的文件,这很是方便我调试。api

4、操做浏览器

from selenium import webdriver
import time

SLEEP_TIME = 3

driver = webdriver.Firefox()

file_path = r'file:///F:\tmp\table.html'
driver.get(file_path)
# 暂停一个时间,方便观察执行的操做
time.sleep(SLEEP_TIME)

# 设置浏览器宽400、高400
driver.set_window_size(400, 400)
time.sleep(SLEEP_TIME)

# 将浏览器最大化显示
driver.maximize_window()
time.sleep(SLEEP_TIME)

driver.get("https://www.baidu.com/index.php?tn=monline_3_dg")
time.sleep(SLEEP_TIME)

# 回退一个页面
driver.back()
time.sleep(SLEEP_TIME)

# 前进一个页面
driver.forward()
time.sleep(SLEEP_TIME)

# 关闭当前窗口
driver.close()
time.sleep(SLEEP_TIME)

# 并关浏览器
driver.quit()

如上webdriver提供了不少操做浏览器的接口,通常比较少用,由于咱们不少时候都不但愿打开浏览器,只但愿获取结果。

# options = webdriver.FirefoxOptions()
options = webdriver.ChromeOptions()
options.headless = True
# driver = webdriver.Firefox(options=options)
driver = webdriver.Chrome(options=options)

若是不想打开浏览器,能够headless设置为True

5、执行JS

不少时候,咱们但愿借助于JS的强大功能,因此咱们须要执行JS,好比咱们要滚动窗口,webdriver并无提供相应的接口,咱们就能够经过JS来实现。

from selenium import webdriver
import time

SLEEP_TIME = 3

driver = webdriver.Firefox()

file_path = r'file:///F:\tmp\table.html'
driver.get(file_path)
time.sleep(SLEEP_TIME)

# 将页面滚动条拖到底部
jsCode = r"document.documentElement.scrollTop=100000"
driver.execute_script(jsCode)

time.sleep(SLEEP_TIME)

# 将滚动条移动到页面的顶部
jsCode = r"document.documentElement.scrollTop=0"
driver.execute_script(jsCode)
time.sleep(SLEEP_TIME)

# 获取h1元素并隐藏,把nav的字体颜色修改成blue
h1 = driver.find_element_by_tag_name('h1')
nav = driver.find_element_by_id('nav')
driver.execute_script(r'arguments[0].style.display="none";arguments[1].style.color="blue"', h1, nav)
time.sleep(SLEEP_TIME)

# 并关浏览器
driver.quit()

获取元素能够参考前面提到的获取元素的介绍,在JS中可使用arguments参数,arguments是一个数组,存放的就是传入的元素参数。

table.html的内容以下:

<!DOCTYPE html>
<html>
<head>
    <title>title</title>
    <style type="text/css">
        #container{
            height: 10000px
        }
        #nav{
            height: 20px;
            width: 800px;
            font-size: 30px;
            color: red;
        }
    </style>
</head>
<body>
<h1 name="th1">This is H1</h1>
<div id="nav">nav</div>
<div id="container"></div>
<div>footer</div>
</body>
</html>
相关文章
相关标签/搜索