1. 磐创AI首页
  2. Medium

将标准和自定义浏览器与Selenium配合使用

欢迎学习使用Python的Selenium教程的第二部分。我将向您展示如何使用Selenium自动化常用和自定义的浏览器,以及打开和关闭新的浏览选项卡。

在上一教程中,我们编写了一个简单的python脚本来打开Firefox浏览器并使用Google搜索,只需几行代码。

在本教程中,我们将编写3个新函数:启动浏览器、打开新选项卡和关闭当前选项卡。那么让我们开始吧。

我们将从启动浏览器功能开始。因此,当我们使用默认浏览器时,使用参数“Browser=1”调用此函数,而当我们希望使用自定义浏览器时,使用参数“Browser=2”调用此函数。我用Google Chromium试过这段代码,但你可以尝试任何你想要的。只需将正确的路径写入浏览器位置和浏览器驱动即可。我注释了几行代码。如果您愿意,可以从它们中删除注释符号,但我不会在代码中使用它们。在最后一行,我们返回“driver”,因为我们将在将来的所有函数中使用它来控制浏览器。当我们想要启动浏览会话时,我们从主代码调用StartBrowser()函数。Google Chromium

def StartBrowser(browser=1, browser_location='', driver_path=''):
if browser == 1:
driver = webdriver.Firefox()
if browser == 2:
options = webdriver.ChromeOptions()
options.binary_location = browser_location
driver = webdriver.Chrome(executable_path=driver_path, chrome_options=options)
#driver.implicitly_wait(30)
#driver.set_window_size(1920,1080)
#driver.maximize_window()
return driver

当我们在互联网上浏览东西时,我们想要使用新的选项卡,所以我们会编写一个函数来打开它。Selenium Webdriver没有在Internet上打开新选项卡的集成命令,因此我们将使用脚本编写自己的命令。在打开新选项卡之前,我们检查当前打开了多少个选项卡:LEN(driver.Window_Handles)。然后,我们执行脚本打开一个新选项卡,我们正在等待它,通过每隔500ms检查我们的选项卡计数,当我们的选项卡计数增加1时,这意味着打开了新的选项卡,我们可以切换到它:

def OpenNewTab(driver, Link):
window_count = len(driver.window_handles)
driver.execute_script('''window.open("'''+Link+'''","_blank");''')
while len(driver.window_handles) != window_count+1:
time.sleep(0.5)
driver.switch_to.window(driver.window_handles[-1])

最后,我们通常想知道如何关闭这些选项卡。这相当简单。我们将为此编写一个新函数,使用一个简单的命令:driver.close()。在此函数中,我们将处理第一个异常,该异常在我们试图关闭而不是现有窗口时发生。例如,当我们关闭一个窗口并尝试再次关闭它时,会出现以下异常:

def DriverClose(driver):
try:
driver.close()
except NoSuchWindowException:
print("NoSuchWindowException in driver.close()")
return False
return True

最终教程代码:

from selenium import webdriver
import time
from selenium.common.exceptions import NoSuchWindowException

def DriverClose(driver):
try:
driver.close()
except NoSuchWindowException:
print("NoSuchWindowException in driver.close()")
return False
return True

def StartBrowser(browser=1, browser_location='', driver_path=''):
if browser == 1:
driver = webdriver.Firefox()
if browser == 2:
options = webdriver.ChromeOptions()
options.binary_location = browser_location
driver = webdriver.Chrome(executable_path=driver_path, chrome_options=options)
#driver.implicitly_wait(30)
#driver.set_window_size(1920,1080)
#driver.maximize_window()
return driver

def OpenNewTab(driver, Link):
window_count = len(driver.window_handles)
driver.execute_script('''window.open("'''+Link+'''","_blank");''')
while len(driver.window_handles) != window_count+1:
time.sleep(0.5)
driver.switch_to.window(driver.window_handles[-1])

browser_location = "C:/Users/HOME/Desktop/chrome-win/chrome.exe"
driver_path = "C:/Users/HOME/Desktop/chrome-win/chromedriver.exe"
driver = StartBrowser(2, browser_location, driver_path)
time.sleep(1)
driver.get("https://www.google.com")
time.sleep(1)
OpenNewTab(driver, "https://www.google.com")

在上面的代码中,我们使用Driver=StartBrowser(2,BROWSER_LOCATION,DRIVER_PATH)行启动一个新的浏览器会话。如果您想在Firefox浏览器中使用它,请将其更改为Driver=StartBrowser(1)。然后我们打开Google搜索页面,一秒钟后,我们在一个新选项卡中打开相同的页面。如果您想了解我们是如何关闭这些选项卡的,请查看我的YouTube视频教程。

这是本简短教程的全部内容。在下一部分中,我们将介绍如何处理异常和在页面上查找HTML对象的方法。

最初发表于https://pylessons.com/Selenium-with-python-beginningshttps://pylessons.com/Selenium-with-python-beginnings

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/09/%e5%b0%86%e6%a0%87%e5%87%86%e5%92%8c%e8%87%aa%e5%ae%9a%e4%b9%89%e6%b5%8f%e8%a7%88%e5%99%a8%e4%b8%8eselenium%e9%85%8d%e5%90%88%e4%bd%bf%e7%94%a8/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息