说明:本教程适用于Python Selenium4.3.0版本,作者百度一大大圈后,发现网上教程均为老版本,无法使用,这里参考老版本与分析源码写出新教程,在新版本中代码更加简洁。
1 介绍
哈喽,大家好,我是有勇气的牛排(全网同名)🐮🐮🐮
有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等
这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。
中文教程:http://www.selenium.org.cn/
2 入门准备
1、安装
pip install selenium
2、下载浏览器驱动
(1)谷歌驱动
http://chromedriver.storage.googleapis.com/index.html
(2)火狐驱动
https://github.com/mozilla/geckodriver/releases/
3、测试代码
可以指定路径,或将驱动放到当前文件夹
from selenium import webdriver
url = "https://www.baidu.com/"
driver = webdriver.Chrome()
driver.get(url)
3 等待策略
3.1 显式等待
显式等待使WebDriver等待某个条件成立时继续执行,否则在达到最长事件抛出超时异常(TimeoutException)
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
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
element = WebDriverWait(driver, 3, 0.5).until(
EC.presence_of_element_located((By.ID, "kw"))
)
element.send_keys('python')
driver.quit()
WebDriverWait类有WebDriver提供,在设置事件内,默认每间隔一段时间检测一次当前页面元素是否存在,如果超时则未检测到,则抛出异常。
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
- driver:浏览器驱动
- timeout:最长超时时间,默认单位为s
- poll_frequency:超时后的异常信息,默认情况下抛–NoSuchElementException异常。
WebDriverWait()一般由until()或until_not()方法配合使用,下面是until()和until_not()方法的说明。
- until(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为True。
- until_not(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为False。
3.2 隐式等待
如果某些元素不是立即可用的,隐式等地啊是告诉WebDriver去等待一定时间后去查找元素。默认等待时间为0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期。
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.set_window_size(1000, 900)
driver.implicitly_wait(10)
driver.get(url)
driver.find_element(By.ID, "kw").clear()
driver.find_element(By.ID, "kw").send_keys("Python")
driver.find_element(By.ID, "su").click()
4 浏览器控制
1、控制浏览器窗口大小
driver.set_window_size(900, 700)
2、浏览器前进、后退
driver.forward()
driver.back()
3、刷新
driver.refresh()
5 元素定位
driver.find_element(by=By.ID, value="username")
driver.find_elements(by=By.CLASS_NAME, value="item")
driver.find_elements(by=By.TAG_NAME, value="a")
driver.find_elements(by=By.TAG_NAME, value="a").get_attribute("href")
参数一by :By.ID
、By.CLASS_NAME
、By.NAME
参数二value: 指定 ID、name或Class的值
4 具体使用
3.1 元素查找、定位
3.3 Webelement常用方法
1、点击和输入
driver.find_element(By.ID, "kw").clear()
driver.find_element(By.ID, "kw").send_keys("Python")
driver.find_element(By.ID, "su").click()
2、提交
模拟输入框回车操作
新版本中未测试出功能
3、其他
size:返回元素尺寸
text:获取元素的文本
get_attribute(name):获取属性值
is_displayed:设置元素是否用户可见
总结:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.set_window_size(900, 700)
driver.get(url)
driver.find_element(By.ID, "kw").clear()
driver.find_element(By.ID, "kw").send_keys("Python")
driver.find_element(By.ID, "su").click()
4 鼠标操作
selenium鼠标事件用的是ActionChains,在调用的时候并不会执行,而是在perform()方法被调用后执行。
引用 ActionCharins类
from selenium.webdriver.common.action_chains import ActionChains
4.1 单击/双击/鼠标右击
url = "https://www.baidu.com/"
实例:点击百度图片超链接
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
url = "https://www.baidu.com/"
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get(url)
rc = driver.find_element(by=By.LINK_TEXT, value="图片")
ActionChains(driver).click(on_element=rc).perform()
4.2 移动元素
这个测试案例并不是很好,各位大佬如果有的话可以留言。
url = "https://www.baidu.com/"
element = driver.find_element(By.LINK_TEXT, "图片")
target = driver.find_element(By.LINK_TEXT, "更多")
ActionChains(driver).drag_and_drop(element, target).perform()
5 键盘事件
全选 Ctrol+A
:send_keys(Keys.CONTROL, 'a')
复制 Ctrol+C
:send_keys(Keys.CONTROL, 'c')
剪切 Ctrol+X
:send_keys(Keys.CONTROL, 'x')
粘贴 Ctrol+V
:send_keys(Keys.CONTROL, 'v')
键盘 F1
:send_keys(Keys.F1)
…
键盘 F12
:send_keys(Keys.F12)
删除键 BackSpace
:send_keys(Keys.BACK_SPACE)
空格键 Space
:send_keys(Keys.SPACE)
制表键 Tab
:send_keys(Keys.TAB)
Esc键 Tab
:send_keys(Keys.ESCAPE)
回车键 ENTER
:send_keys(Keys.ENTER)
5.1 输入
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.set_window_size(1000, 900)
driver.get(url)
driver.find_element(By.ID, "kw").clear()
driver.find_element(By.ID, "kw").send_keys("Pythonn")
driver.find_element(By.ID, "kw").send_keys(Keys.BACK_SPACE)
5.2 组合按键
ActionChains(driver).key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL).perform()
6 获取页面信息
now_url = driver.current_url
title = driver.title
8 在不同窗口和框架之间移动
9 警告框处理
10 下拉选择框
11 文件上传
driver.find_element_by_name("file").send_keys('D:\\upload_file.txt')
12 cookie操作
WebDriver操作cookie的方法:
get_cookies()
: 获得所有cookie信息。
get_cookie(name)
: 返回字典的key为“name”的cookie信息。
add_cookie(cookie_dict)
: 添加cookie。“cookie_dict”指字典对象,必须有name 和value 值。
delete_cookie(name,optionsString)
:删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”。
delete_all_cookies()
: 删除所有cookie信息
13 调用JavaScript代码
driver.execute_script('return document.title;')
14 关闭浏览器
driver.close()
driver.quit()
<blockquote>
<p>说明:本教程适用于Python Selenium4.3.0版本,作者百度一大大圈后,发现网上教程均为老版本,无法使用,这里参考老版本与分析源码写出新教程,在新版本中代码更加简洁。</p>
</blockquote>
<h2><a id="1__1"></a>1 介绍</h2>
<p><font face="楷体,华文行楷,隶书,黑体" color="red" size="4"><strong>哈喽,大家好,我是有勇气的牛排(全网同名)🐮🐮🐮</strong></font></p>
<p><font face="楷体,华文行楷,隶书,黑体" color="blue" size="4"><strong>有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。</strong></font></p>
<p>Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。</p>
<p>支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等</p>
<p>这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。</p>
<p>中文教程:<a href="http://www.selenium.org.cn/" target="_blank">http://www.selenium.org.cn/</a></p>
<h2><a id="2__15"></a>2 入门准备</h2>
<p>1、安装</p>
<pre><div class="hljs"><code class="lang-python">pip install selenium
</code></div></pre>
<p>2、下载浏览器驱动</p>
<p>(1)谷歌驱动</p>
<p><a href="http://chromedriver.storage.googleapis.com/index.html" target="_blank">http://chromedriver.storage.googleapis.com/index.html</a></p>
<p>(2)火狐驱动</p>
<p><a href="https://github.com/mozilla/geckodriver/releases/" target="_blank">https://github.com/mozilla/geckodriver/releases/</a></p>
<p>3、测试代码<br />
可以指定路径,或将驱动放到当前文件夹</p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> selenium <span class="hljs-keyword">import</span> webdriver
url = <span class="hljs-string">"https://www.baidu.com/"</span>
<span class="hljs-comment"># 加载驱动</span>
<span class="hljs-comment"># driver = webdriver.Firefox() # Firefox浏览器</span>
<span class="hljs-comment"># driver = webdriver.Firefox("驱动路径")</span>
driver = webdriver.Chrome() <span class="hljs-comment"># Chrome浏览器</span>
<span class="hljs-comment"># driver = webdriver.Ie() # Internet Explorer浏览器</span>
<span class="hljs-comment"># driver = webdriver.Edge() # Edge浏览器</span>
<span class="hljs-comment"># driver = webdriver.Opera() # Opera浏览器</span>
<span class="hljs-comment"># driver = webdriver.PhantomJS() # PhantomJS</span>
<span class="hljs-comment"># 打开网页</span>
driver.get(url)
</code></div></pre>
<h2><a id="3__50"></a>3 等待策略</h2>
<h3><a id="31__51"></a>3.1 显式等待</h3>
<p>显式等待使WebDriver等待某个条件成立时继续执行,否则在达到最长事件抛出超时异常(TimeoutException)</p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> selenium <span class="hljs-keyword">import</span> webdriver
<span class="hljs-keyword">from</span> selenium.webdriver.common.by <span class="hljs-keyword">import</span> By
<span class="hljs-keyword">from</span> selenium.webdriver.support.ui <span class="hljs-keyword">import</span> WebDriverWait
<span class="hljs-keyword">from</span> selenium.webdriver.support <span class="hljs-keyword">import</span> expected_conditions <span class="hljs-keyword">as</span> EC
driver = webdriver.Firefox()
driver.get(<span class="hljs-string">"https://www.baidu.com"</span>)
element = WebDriverWait(driver, <span class="hljs-number">3</span>, <span class="hljs-number">0.5</span>).until(
EC.presence_of_element_located((By.ID, <span class="hljs-string">"kw"</span>))
)
element.send_keys(<span class="hljs-string">'python'</span>)
driver.quit()
</code></div></pre>
<p>WebDriverWait类有WebDriver提供,在设置事件内,默认每间隔一段时间检测一次当前页面元素是否存在,如果超时则未检测到,则抛出异常。</p>
<p><code>WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)</code></p>
<ul>
<li>driver:浏览器驱动</li>
<li>timeout:最长超时时间,默认单位为s</li>
<li>poll_frequency:超时后的异常信息,默认情况下抛–NoSuchElementException异常。</li>
</ul>
<p>WebDriverWait()一般由until()或until_not()方法配合使用,下面是until()和until_not()方法的说明。</p>
<ul>
<li>until(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为True。</li>
<li>until_not(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为False。</li>
</ul>
<h3><a id="32__83"></a>3.2 隐式等待</h3>
<p>如果某些元素不是立即可用的,隐式等地啊是告诉WebDriver去等待一定时间后去查找元素。默认等待时间为0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期。</p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> selenium <span class="hljs-keyword">import</span> webdriver
<span class="hljs-keyword">from</span> selenium.webdriver.common.by <span class="hljs-keyword">import</span> By
<span class="hljs-comment"># 加载驱动</span>
driver = webdriver.Chrome() <span class="hljs-comment"># Chrome浏览器</span>
url = <span class="hljs-string">"https://www.baidu.com/"</span>
driver.set_window_size(<span class="hljs-number">1000</span>, <span class="hljs-number">900</span>)
<span class="hljs-comment"># 隐式等待</span>
driver.implicitly_wait(<span class="hljs-number">10</span>) <span class="hljs-comment"># seconds</span>
driver.get(url)
driver.find_element(By.ID, <span class="hljs-string">"kw"</span>).clear()
driver.find_element(By.ID, <span class="hljs-string">"kw"</span>).send_keys(<span class="hljs-string">"Python"</span>)
driver.find_element(By.ID, <span class="hljs-string">"su"</span>).click()
</code></div></pre>
<h2><a id="4__105"></a>4 浏览器控制</h2>
<p>1、控制浏览器窗口大小</p>
<pre><div class="hljs"><code class="lang-python">driver.set_window_size(<span class="hljs-number">900</span>, <span class="hljs-number">700</span>)
</code></div></pre>
<p>2、浏览器前进、后退</p>
<pre><div class="hljs"><code class="lang-python">driver.forward()
driver.back()
</code></div></pre>
<p>3、刷新</p>
<pre><div class="hljs"><code class="lang-python">driver.refresh()
</code></div></pre>
<h2><a id="5__121"></a>5 元素定位</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># 通过id 查询首个满足条件</span>
driver.find_element(by=By.ID, value=<span class="hljs-string">"username"</span>)
<span class="hljs-comment"># 通过class 查询所有满足条件 [列表形式返回]</span>
driver.find_elements(by=By.CLASS_NAME, value=<span class="hljs-string">"item"</span>)
<span class="hljs-comment"># 通过TAG_NAME</span>
driver.find_elements(by=By.TAG_NAME, value=<span class="hljs-string">"a"</span>)
driver.find_elements(by=By.TAG_NAME, value=<span class="hljs-string">"a"</span>).get_attribute(<span class="hljs-string">"href"</span>)
</code></div></pre>
<p>参数一<mark>by</mark> :<code>By.ID</code>、<code>By.CLASS_NAME</code>、<code>By.NAME</code><br />
参数二<mark>value</mark>: 指定 ID、name或Class的值</p>
<h2><a id="4__135"></a>4 具体使用</h2>
<h3><a id="31__136"></a>3.1 元素查找、定位</h3>
<h3><a id="33_Webelement_143"></a>3.3 Webelement常用方法</h3>
<p>1、点击和输入</p>
<pre><div class="hljs"><code class="lang-python">driver.find_element(By.ID, <span class="hljs-string">"kw"</span>).clear() <span class="hljs-comment"># 清除文本</span>
driver.find_element(By.ID, <span class="hljs-string">"kw"</span>).send_keys(<span class="hljs-string">"Python"</span>) <span class="hljs-comment"># 模拟按键输入</span>
driver.find_element(By.ID, <span class="hljs-string">"su"</span>).click() <span class="hljs-comment"># 点击元素</span>
</code></div></pre>
<p>2、提交<br />
模拟输入框回车操作</p>
<pre><div class="hljs"><code class="lang-python">新版本中未测试出功能
</code></div></pre>
<p>3、其他</p>
<p>size:返回元素尺寸<br />
text:获取元素的文本<br />
get_attribute(name):获取属性值<br />
is_displayed:设置元素是否用户可见</p>
<p>总结:</p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> selenium <span class="hljs-keyword">import</span> webdriver
<span class="hljs-comment"># 加载驱动</span>
<span class="hljs-keyword">from</span> selenium.webdriver.common.by <span class="hljs-keyword">import</span> By
driver = webdriver.Chrome() <span class="hljs-comment"># Chrome浏览器</span>
<span class="hljs-comment"># url = "https://read.douban.com/ebook/7821748/?dcs=search"</span>
url = <span class="hljs-string">"https://www.baidu.com/"</span>
driver.set_window_size(<span class="hljs-number">900</span>, <span class="hljs-number">700</span>)
<span class="hljs-comment"># 打开网页</span>
driver.get(url)
driver.find_element(By.ID, <span class="hljs-string">"kw"</span>).clear() <span class="hljs-comment"># 清除文本</span>
driver.find_element(By.ID, <span class="hljs-string">"kw"</span>).send_keys(<span class="hljs-string">"Python"</span>) <span class="hljs-comment"># 模拟按键输入</span>
driver.find_element(By.ID, <span class="hljs-string">"su"</span>).click() <span class="hljs-comment"># 点击元素</span>
</code></div></pre>
<h2><a id="4__186"></a>4 鼠标操作</h2>
<p>selenium鼠标事件用的是ActionChains,在调用的时候并不会执行,而是在perform()方法被调用后执行。</p>
<p>引用 ActionCharins类</p>
<pre><div class="hljs"><code class="lang-powershell">from selenium.webdriver.common.action_chains import ActionChains
</code></div></pre>
<h3><a id="41__195"></a>4.1 单击/双击/鼠标右击</h3>
<pre><div class="hljs"><code class="lang-shell">url = "https://www.baidu.com/"
</code></div></pre>
<p>实例:点击百度图片超链接</p>
<pre><div class="hljs"><code class="lang-powershell">from selenium import webdriver
<span class="hljs-comment"># 引用ActionChains类</span>
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
url = <span class="hljs-string">"https://www.baidu.com/"</span>
driver = webdriver.Chrome() <span class="hljs-comment"># Chrome浏览器</span>
<span class="hljs-comment"># 隐式等待</span>
driver.implicitly_wait(<span class="hljs-number">10</span>) <span class="hljs-comment"># seconds</span>
<span class="hljs-comment"># 打开网页</span>
driver.get(url)
rc = driver.find_element(by=By.LINK_TEXT, value=<span class="hljs-string">"图片"</span>)
<span class="hljs-comment"># 右击</span>
<span class="hljs-comment"># ActionChains(driver).context_click(rc).perform()</span>
<span class="hljs-comment"># 双击</span>
<span class="hljs-comment"># ActionChains(driver).double_click(rc).perform</span>
<span class="hljs-comment"># 单击</span>
ActionChains(driver).click(on_element=rc).perform()
</code></div></pre>
<h3><a id="42__225"></a>4.2 移动元素</h3>
<p>这个测试案例并不是很好,各位大佬如果有的话可以留言。</p>
<pre><div class="hljs"><code class="lang-powershell">url = <span class="hljs-string">"https://www.baidu.com/"</span>
</code></div></pre>
<pre><div class="hljs"><code class="lang-powershell"><span class="hljs-comment"># 移动元素</span>
element = driver.find_element(By.LINK_TEXT, <span class="hljs-string">"图片"</span>)
target = driver.find_element(By.LINK_TEXT, <span class="hljs-string">"更多"</span>)
ActionChains(driver).drag_and_drop(element, target).perform()
</code></div></pre>
<h2><a id="5__240"></a>5 键盘事件</h2>
<p><code>全选 Ctrol+A </code>:<code>send_keys(Keys.CONTROL, 'a')</code><br />
<code>复制 Ctrol+C</code>:<code>send_keys(Keys.CONTROL, 'c')</code><br />
<code>剪切 Ctrol+X</code>:<code>send_keys(Keys.CONTROL, 'x')</code><br />
<code>粘贴 Ctrol+V</code>:<code>send_keys(Keys.CONTROL, 'v')</code></p>
<p><code>键盘 F1</code>:<code>send_keys(Keys.F1)</code><br />
…<br />
<code>键盘 F12</code>:<code>send_keys(Keys.F12)</code></p>
<p><code>删除键 BackSpace</code>:<code>send_keys(Keys.BACK_SPACE)</code></p>
<p><code>空格键 Space</code>:<code>send_keys(Keys.SPACE)</code></p>
<p><code>制表键 Tab</code>:<code>send_keys(Keys.TAB)</code></p>
<p><code>Esc键 Tab</code>:<code>send_keys(Keys.ESCAPE)</code></p>
<p><code>回车键 ENTER</code>:<code>send_keys(Keys.ENTER)</code></p>
<h3><a id="51__260"></a>5.1 输入</h3>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> selenium <span class="hljs-keyword">import</span> webdriver
<span class="hljs-comment"># 引入 ActionChains 类</span>
<span class="hljs-keyword">from</span> selenium.webdriver <span class="hljs-keyword">import</span> Keys
<span class="hljs-comment"># 加载驱动</span>
<span class="hljs-keyword">from</span> selenium.webdriver.common.by <span class="hljs-keyword">import</span> By
driver = webdriver.Chrome() <span class="hljs-comment"># Chrome浏览器</span>
url = <span class="hljs-string">"https://www.baidu.com/"</span>
driver.set_window_size(<span class="hljs-number">1000</span>, <span class="hljs-number">900</span>)
driver.get(url)
driver.find_element(By.ID, <span class="hljs-string">"kw"</span>).clear()
driver.find_element(By.ID, <span class="hljs-string">"kw"</span>).send_keys(<span class="hljs-string">"Pythonn"</span>)
driver.find_element(By.ID, <span class="hljs-string">"kw"</span>).send_keys(Keys.BACK_SPACE)
</code></div></pre>
<h3><a id="52__280"></a>5.2 组合按键</h3>
<pre><div class="hljs"><code class="lang-powershell"><span class="hljs-comment"># Ctrl+a</span>
ActionChains(driver).key_down(Keys.CONTROL).send_keys(<span class="hljs-string">"a"</span>).key_up(Keys.CONTROL).perform()
</code></div></pre>
<h2><a id="6__287"></a>6 获取页面信息</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># 获取当前页面URL</span>
now_url = driver.current_url
<span class="hljs-comment"># 获取当前页面title</span>
title = driver.title
</code></div></pre>
<p>8 在不同窗口和框架之间移动</p>
<p>9 警告框处理</p>
<p>10 下拉选择框</p>
<p>11 文件上传</p>
<pre><div class="hljs"><code class="lang-python">driver.find_element_by_name(<span class="hljs-string">"file"</span>).send_keys(<span class="hljs-string">'D:\\upload_file.txt'</span>)
</code></div></pre>
<h2><a id="12_cookie_309"></a>12 cookie操作</h2>
<p>WebDriver操作cookie的方法:</p>
<p><code>get_cookies()</code>: 获得所有cookie信息。<br />
<code>get_cookie(name)</code>: 返回字典的key为“name”的cookie信息。<br />
<code>add_cookie(cookie_dict) </code>: 添加cookie。“cookie_dict”指字典对象,必须有name 和value 值。<br />
<code>delete_cookie(name,optionsString)</code>:删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”。<br />
<code>delete_all_cookies()</code>: 删除所有cookie信息</p>
<h2><a id="13_JavaScript_318"></a>13 调用JavaScript代码</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># 获取网页标题</span>
driver.execute_script(<span class="hljs-string">'return document.title;'</span>)
</code></div></pre>
<h2><a id="14__325"></a>14 关闭浏览器</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># 关闭单个窗口</span>
driver.close()
</code></div></pre>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># 关闭所有窗口</span>
driver.quit()
</code></div></pre>
留言