“权限被拒绝”错误破坏Selenium抓取

1 投票
2 回答
4310 浏览
提问于 2025-04-17 08:44

我一直在用Selenium(Python的一个网页自动化工具)抓取一个网站。当我尝试让它点击一个选项时,出现了权限被拒绝的错误。完整的错误信息如下:

Traceback (most recent call last):
  File "scrape.py", line 19, in <module>
    subjectOptions[1].click()
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 45, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 194, in _execute
    return self._parent.execute(command, params)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 153, in execute
    self.error_handler.check_response(response)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 147, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: u"'Error: Permission denied for <http://localhost/scrape_test> to get property HTMLDocument.compatMode' when calling method: [wdIMouse::move]"

这是导致问题的代码。我确定我想点击的选项是存在的(根据print的输出):

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait #available since 2.4.0
import time

# Create a new instance of the FireFox driver
driver = webdriver.Firefox()

# go to the local version of the page for testing
driver.get("http://localhost/scrape_test")

# Find the select by ID, get its options
selectElement = driver.find_element_by_id("CLASS_SRCH_WRK2_SUBJECT$65$")
subjectOptions = selectElement.find_elements_by_tag_name("option")

# Click the desired option
subjectOptions[1].click()

我在Mac OS X 10.7.2上使用的是Firefox 8.0.1。

2 个回答

0

目前你可以通过这里提供的解决方法来绕过这个问题,具体内容可以查看这个链接

5

看起来这是一个webdriver的bug。最近一位修改了selenium源代码的程序员在日志中提到:

这导致了权限错误,我仍然无法解决:

错误:在调用方法时,无法获取http://www.finn.no的属性'HTMLDocument.compatMode',权限被拒绝:[wdIMouse::move]

关于这个问题有一些讨论,可以在这里这里这里找到。

根据讨论,使用Firefox 7应该没有问题。此外,这个相关问题暗示尽管出现错误,链接仍然可以被点击,所以在try/except块中可能会有效。

撰写回答