Sta*_*tan 5 python-3.x phantomjs selenium-webdriver pyvirtualdisplay google-chrome-headless
我正在尝试使用 Python 和 selenium 打开一个简单的 chrome 实例。请在下面找到我的代码:
import time, datetime, sys, os
start_time = time.time()
from datetime import datetime
os.system("cls")
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
CHROME_PATH = 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
CHROMEDRIVER_PATH = 'C:\\Users\\'+userID+'\\'+filename+'\\chromedriver.exe'
WINDOW_SIZE = "1920,1080"
chrome_options = Options()
chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE)
chrome_options.add_argument("disable-gpu")
chrome_options.add_argument("disable-infobars")
chrome_options.add_argument("--disable-notifications")
chrome_options.binary_location = CHROME_PATH
browser = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,chrome_options=chrome_options)
time.sleep(1)
browser.get("https://www.google.com")
os.system("cls")
time.sleep(2)
Run Code Online (Sandbox Code Playgroud)
我希望它在后台打开,即当我输入其他内容时,鼠标/光标焦点在打开后不应随机转到此自动镶边实例。
限制:请注意以下限制:
还有其他方法可以将此 chrome 实例推送到后台吗?谢谢
没有编程方式可以在后台或作为后台进程在浏览器客户端中打开。
\n\n当然,另一种方法是使用无头浏览器,您可以在哪些驱动程序支持 \xe2\x80\x9cno-browser\xe2\x80\x9d/\xe2\x80\x9cheadless\xe2\x80\x9d 测试中找到详细讨论?。
\n\n软件测试自动化是一门艺术。您的测试框架应该是:
\n\n@Tests执行时,它应该不受手动干预。特别是当您@Tests基于Selenium时,当测试执行正在进行时,由于以下原因,不应干预测试环境:
actions 类的行为旨在尽可能模仿实际输入设备的远程端行为,并且实现策略可能涉及例如将合成事件注入浏览器事件循环中。因此,派遣行动的步骤将不可避免地最终出现在特定于实施的领域。然而,某些内容可观察到的效果必须在各个实现中保持一致。为了适应这一点,规范要求远程端执行特定于实现的操作调度步骤,以及事件及其属性的列表。此列表并不全面;特别是,输入源的默认操作可能会导致根据浏览器的实现和状态生成附加事件(例如,当焦点位于可编辑元素上时与按键操作相关的输入事件、滚动事件等)。而且,
\n\nWebDriver API 用户生成的激活触发器需要与真实用户与浏览器交互生成的激活触发器无法区分。特别是,分派的事件会将 isTrusted 属性设置为 true。调度这些事件的最可靠方法是在浏览器实现本身中创建它们。将特定于操作系统的输入消息发送到浏览器的窗口的缺点是,自动化的浏览器可能无法与意外修改输入源状态的用户正确隔离。使用操作系统级辅助功能 API 的缺点是浏览器窗口必须聚焦,因此多个 WebDriver 实例无法并行运行。
操作系统级可访问性 API 的一个优点是,它保证输入正确地反映用户输入,并在必要时允许与主机操作系统交互。然而,从机器利用率的角度来看,这可能会带来性能损失。
此外,
\n\n最后,根据Internet Explorer 和本机事件:
\n\n浏览器焦点:
\n\n挑战在于,如果窗口没有焦点,IE 本身似乎不完全尊重我们向 IE 浏览器窗口发送的 Windows 消息(WM_MOUSEDOWN 和 WM_MOUSEUP)。具体来说,被单击的元素将在其周围收到一个焦点窗口,但该元素不会处理该单击。可以说,我们根本不应该发送消息;我们应该这样做。相反,我们应该使用 SendInput() API,但该 API 明确要求窗口具有焦点。我们与 WebDriver 项目有两个相互冲突的目标。
首先,我们努力尽可能地模仿用户。这意味着使用本机事件而不是使用 JavaScript 模拟事件。
其次,我们不希望浏览器窗口的焦点自动化。这意味着仅仅将浏览器窗口强制到前台并不是最理想的。
始终保持测试环境与开发环境分开,并且绝对不受人工干预。
\n| 归档时间: |
|
| 查看次数: |
8555 次 |
| 最近记录: |