首页 > 解决方案 > 如何在 selenium 和 python 程序之间切换?

问题描述

我在 python 中有一个带有 selenium-crhomedriver 的代码。代码在特定页面上打开一个窗口,下载一个 excel 文件,稍后代码打开 excel 文件,它转到特定行并从工作表中复制一个值。我需要返回页面并将从 excel 文件中复制的值粘贴到页面上的输入字段中。

我尝试使用 pyautogui 模拟运动,但在某些情况下我有错误,因为在某些情况下我打开了 3 个以上的窗口。

这是我的代码:

from selenium import webdriver
import time
import os
import pyautogui
import webbrowser
from selenium.webdriver.common.keys import Keys
path_excel = r"\Macro_Boletín_Concursal.xlsm"
url = 'http://www.boletinconcursal.cl/boletin/procedimientos'
chrome_path =r"path"
driver = webdriver.Chrome(chrome_path)
elem = driver.find_element_by_xpath("""//*[@id="rut"]""")
driver.get("http://www.boletinconcursal.cl/boletin/procedimientos")
driver.find_element_by_xpath("""//*[@id="btnRegistro"]/span[2]""").click()
time.sleep(3)
pyautogui.hotkey('win', 'd')
os.popen(path_excel)
time.sleep(7)
pyautogui.hotkey('ctrl', 'c')

在这部分我需要回到页面,稍后执行这部分代码:

elem.send_keys(Keys.CONTROL, 'a') #highlight
elem.send_keys(Keys.CONTROL, 'v') #paste
driver.find_element_by_xpath("""//*[@id="btnBuscarPublicacion"]/span[2]""").click() 

然后我需要一个代码在 excel 文件和 chromedriver 之间移动,或者从 chromedriver 移动到 excel 中。

标签: pythonseleniumweb-scrapingselenium-chromedriver

解决方案


Mac 和 Windows 有键盘快捷键,可以帮助在窗口之间切换。

elem.send_keys(Keys.ALT, Keys.ESCAPE) #for Windows
elem.send_keys(Keys.COMMAND, '~') # for Mac

您还可以使用 pyautogui 并使用热键功能。只需使用与上图相同的热键即可。

编辑:

elem 必须是已定义的 webdriver.element。只需通过 id、类名、xpath 等查找任何 web 元素,然后在该元素上运行 send_keys 方法,如上所示。


推荐阅读