python - 如何在浏览器最小化时使用 selenium webdriver 执行测试
问题描述
我尝试运行这个程序。它适用于代码,但是当我最小化浏览器时,会弹出错误。似乎该程序无法找到该按钮。有什么我可以用来修复它的。帮助
import selenium
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import os
import datetime
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox as msgbox
# Using Chrome to access web
driver = webdriver.Chrome()
master = Tk()
master.resizable(0, 0) #0 means false
genType = StringVar(master)
options = ["1-Day Admission Only", "Audio Only"]
genType.set(options[0])
def optionChanged(var):
if var == "1-Day Admission Only":
met()
elif var == "Audio Only":
met()
genTypeMenu = OptionMenu(master, genType, *options, command=optionChanged)
def start():
opt = genType.get()
if opt == "1-Day Admission Only":
def met_one_day_admission():
for i in range(int(qty.s.get())):
#do somethig here
b = Button(master, text="Start", width=20, command=start, fg="red")
qty = entry_with_label("Quantity :", "100")
genTypeMenu.pack()
b.pack()
解决方案
当您通过Selenium启动测试执行时,通常浏览器会以最大化模式启动。现在,要执行您的程序/脚本,Selenium需要将重点放在呈现HTML DOM的浏览器客户端上。当测试执行正在进行时,如果用户手动强制最小化浏览器,Selenium 将失去焦点,并且在任何时间点都会引发异常,这将停止测试执行。
您可以在手动中断浏览器时停止 Selenium中找到详细讨论
为什么最小化的浏览器会给出未找到元素的错误
WebDriver 使用浏览器内置的自动化支持直接驱动浏览器。WebDriver 尝试尽可能地模拟用户体验和操作,并使用每个浏览器对自动化的本机支持直接调用浏览器。对用户体验进行建模需要特定的设计、技术和与元素交互的支持。这些交互及其支持的功能取决于您使用的浏览器。简而言之,如果浏览器被最小化, Selenium很可能无法工作,因为在浏览器窗口最小化时用户无法与网页交互。
您可以从 Selenium 中的 @JimEvans 找到详细分析- 为什么最小化的浏览器会给出未找到元素的错误,而 max 不会
推荐阅读
- git - 在 `git push` 完成后执行命令,使用 git hook
- java - 提取并标记 csv/txt 输入的第二列 - Java
- group-by - PySpark:如何在列中使用 Or 进行分组
- javascript - Js数据表按钮在收缩模式下移动到第二行时不起作用
- google-drive-api - Google Drive API - 向服务帐户授予对文件夹中文件的访问权限
- java - 使用另一个 JBoss 服务器上的已验证用户在远程 JBoss 服务器上查找 JNDI
- apache-kafka - 是否可以拥有具有不同操作系统的 Kafka 集群?
- python - 通过 JSON 数组循环到 API
- python - 连接列值直到第二个最后一个有效事务(非零或非空)
- jquery - jQuery我粘贴文本时无法删除div标签