Python-Selenium基本操作


Selenium常用:
Python-Selenium基本操作

Python-Selemium元素定位

Python-Selenium操作鼠标键盘Cookie

一、简介

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

安装selenium:

pip install selenium

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

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

说明需要driver,Firefox可以通过:geckodriver下载

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

chrome://version/

chrome-version

然后可以到下面的地址下载对应版本的driver:
chromedriver下载1

chromedriver下载2

下载之后最后放在path中,对于python来说,可以放在安装目录的scripts目录下

driver

二、打开链接

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的存放路径。

三、打开本地文件

from selenium import webdriver

driver = webdriver.Firefox()

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

webdriver不仅仅可以打开本地的文件,这非常方便我调试。

四、操作浏览器

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

五、执行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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值