假设焦点在Selenium chrome浏览器中

时间:2015-04-19 19:22:43

标签: python python-2.7 selenium selenium-webdriver selenium-chromedriver

我正在使用Selenium从网站上抓取数据。该网站需要窗口焦点,以显示我需要的某些元素。

我希望能够在后台运行我的程序,而不必在窗口运行时对其进行聚焦。

有没有办法欺骗网站认为它专注于?

我正在使用硒铬驱动程序。


修改:Here's a quick and dirty test I built

查看代码on GitHub

收到window.onblur事件后,网站背景颜色将变为黑色,并在收到window.onfocus事件时返回白色。

我想假装这些事件,让浏览器认为它已经收到焦点事件。

1 个答案:

答案 0 :(得分:7)

由于页面通过onfocus对象中的onblurwindow回调获得焦点信息,因此您可以自行调用它们。

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() }")