I wonder if someone has solution how to perform trivial right click action on any element of DOM. Let's for example do right click on the 'Google Search' button to select 'Save Page As' option. According to my research it involves ActionChains. Roughly my code is as follows:

from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver import ActionChains

br = webdriver.Firefox()
br.get('http://www.google.com')
btn=br.find_element_by_id('qbqfba')
actionChains = ActionChains(br)

actionChains.context_click(btn).perform()

The following errors occurs:

  File "/usr/local/lib/python2.7/dist-packages/selenium-2.39.0-py2.7.egg/seleniu
m/webdriver/remote/errorhandler.py", line 164, in check_response
    raise exception_class(message, screen, stacktrace)
MoveTargetOutOfBoundsException: Message: u'Offset within element cannot be scrol
led into view: (50, 14.5): [object XrayWrapper [object HTMLButtonElement]]' ; St
acktrace: 
    at FirefoxDriver.prototype.mouseMove (file:///tmp/tmpuIgKVI/extensions/fxdri
ver@googlecode.com/components/driver_component.js:9176)
    at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpuIgKVI/extens
ions/fxdriver@googlecode.com/components/command_processor.js:10831)
    at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpuIgKVI/extensio
ns/fxdriver@googlecode.com/components/command_processor.js:10836)
    at DelayedCommand.prototype.execute/< (file:///tmp/tmpuIgKVI/extensions/fxdr
iver@googlecode.com/components/command_processor.js:10778)

Where I get wrong with it? p.s. My testing environment is Ubuntu 12.04, just in case is matter.

有帮助吗?

解决方案

The id attribute of the Google Search button is gbqfba, not qbqfba (if you are seeing the same google search page I am seeeing):

btn = br.find_element_by_id('gbqfba')
#                            ^

Google Search button

Alternatively you can find button by text:

br.find_element_by_xpath('.//button[contains(., "Google Search")]')
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top