在 Selenium chrome 浏览器中伪造焦点
Feign focus in Selenium chrome browser
我正在使用 Selenium 从网站上抓取数据。该网站需要 window 焦点才能显示我需要的某些元素。
我希望能够在后台 运行 我的程序,而不必在 运行 正在运行时聚焦 window。
有什么方法可以让网站认为它关注的是什么?
我正在使用 selenium chrome 驱动程序。
编辑:Here's a quick and dirty test I built.
查看代码on GitHub
收到window.onblur
事件后,网站背景颜色变为黑色,收到window.onfocus
事件后,背景颜色变回白色。
我想伪造这些事件,让浏览器认为它收到了焦点事件。
由于页面通过window
对象中的onfocus
和onblur
回调获取焦点信息,您可以自己调用它们。
browser.execute_script("window.onfocus()")
browser.execute_script("window.onblur()")
为了好玩,试试这个脚本:
from selenium import webdriver
import time
chromedriver = "./chromedriver"
browser = webdriver.Chrome(executable_path = chromedriver)
browser.get('http://anubiann00b.github.io/FocusTest/')
while True:
browser.execute_script("window.onfocus()")
time.sleep(1)
browser.execute_script("window.onblur()")
time.sleep(1)
当然,如果您想让浏览器认为它始终处于焦点状态,请让 onblur
方法调用 onfocus
方法:
browser.execute_script("window.onblur = function() { window.onfocus() }")
我正在使用 Selenium 从网站上抓取数据。该网站需要 window 焦点才能显示我需要的某些元素。
我希望能够在后台 运行 我的程序,而不必在 运行 正在运行时聚焦 window。
有什么方法可以让网站认为它关注的是什么?
我正在使用 selenium chrome 驱动程序。
编辑:Here's a quick and dirty test I built.
查看代码on GitHub
收到window.onblur
事件后,网站背景颜色变为黑色,收到window.onfocus
事件后,背景颜色变回白色。
我想伪造这些事件,让浏览器认为它收到了焦点事件。
由于页面通过window
对象中的onfocus
和onblur
回调获取焦点信息,您可以自己调用它们。
browser.execute_script("window.onfocus()")
browser.execute_script("window.onblur()")
为了好玩,试试这个脚本:
from selenium import webdriver
import time
chromedriver = "./chromedriver"
browser = webdriver.Chrome(executable_path = chromedriver)
browser.get('http://anubiann00b.github.io/FocusTest/')
while True:
browser.execute_script("window.onfocus()")
time.sleep(1)
browser.execute_script("window.onblur()")
time.sleep(1)
当然,如果您想让浏览器认为它始终处于焦点状态,请让 onblur
方法调用 onfocus
方法:
browser.execute_script("window.onblur = function() { window.onfocus() }")