2015-04-07 68 views
3

我使用python包來移動鼠標在某些指定的模式或只是隨機動作。硒移動到絕對位置

我嘗試的第一件事就是獲得//html元素的大小,並使用它來爲鼠標移動設定邊界。然而,當我這樣做了MoveTargetOutOfBoundsException擡起了頭,並顯示一些「給出」座標(這是不輸入任何接近

我使用的代碼: origin = driver.find_element_by_xpath('//html') bounds = origin.size print bounds ActionChains(driver).move_to_element(origin).move_by_offset(bounds['width'] - 10, bounds['height'] - 10).perform()

所以我減去10從每個邊界測試,並移動到該位置(顯然move_to_element_by_offset方法是不可靠的)。

MoveTargetOutOfBoundsException: Message: Given coordinates (1919, 2766) are outside the document. Error: MoveTargetOutOfBoundsError: The target scroll location (17, 1798) is not on the page. Stacktrace: at FirefoxDriver.prototype.mouseMoveTo (file://...

實際給出的座標是(1903-10=1893, 969-10=989)。

有何想法?

+0

嘗試使用body而不是html來源 –

+0

試過了,它沒有幫助。 (相同結果) – Lucidnonsense

回答

0

我的問題是我沒在等待元素加載。至少我認爲這是問題所在,因爲如果我允許硒等待元素,然後單擊它,它就會起作用。

0

兩個可能的問題:

1)有可能是滾動頁面,所以點擊之前,你應該有滾動到元視圖

2)給定大小沒有瀏覽器元素尊重,而在現實世界中你應該用大約20或30代替原始大小(你可以測試那個值)

+0

好的。兩個問題: 使用move_to_element時頁面不滾動到元素嗎? 爲什麼20或30儘管返回的座標被關閉了幾百? – Lucidnonsense

+0

在啓用了本機事件的Firefox中,將根據具體情況進行滾動,但在硒錯誤跟蹤器中存在大量錯誤。對於第二個問題 - 取決於屏幕分辨率和安裝的插件,界面等,尺寸會有所不同。例如,如果您將在phantomjs(無頭Webkit瀏覽器)上運行相同的命令,則相同命令的座標將是正確的,這是因爲沒有任何其他接口。 – stanjer

+0

但是,如何獲取文檔大小,所以我知道不要移動到哪裏? – Lucidnonsense