python - 如何在 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 中。
解决方案
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 方法,如上所示。
推荐阅读
- php - 插入查询中没有真正的结果返回
- ruby-on-rails - 使用 Devise 进行身份验证后记住原始目的地
- apache-spark - 在 Pyspark 中独立地从多个列中有效地查找前 N 个值
- javascript - 将值推送到数组中,并且推送的第一个值总是在中间结束
- node.js - 在同一发布请求中使用 Tennent 实例中的地址 ID
- amazon-web-services - Lambda 别名和 CloudFront:函数 ARN 必须引用特定函数版本
- visual-studio - 将鼠标悬停在文本上时显示工具提示
- c++ - 如何在不创建实例的情况下获取类的方法成员的类型?
- vue.js - 如何将vue中的对象转换回标准的js对象?
- algorithm - 如何按顺时针/逆时针方向对所有多边形点进行排序?