1

私は splinter でいくつかのブラウザー テストを実行していますが、ある時点で、たどりたいリンクのあるページに出くわしました。この呼び出しは成功し、リンクを返します。

my_browser.find_link_by_partial_href('/mystuff/' + str(important_number))

しかし、私はそれをクリックすることはできません:

my_browser.find_link_by_partial_href('/mystuff/' + str(important_number)).click()
...
...
...
ElementNotVisibleException: Message: u'{"errorMessage":"Element is not currently visible and may not be manipulated","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"81","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:38495","User-Agent":"Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\\"sessionId\\": \\"7812e810-9100-11e4-881c-37067349397d\\", \\"id\\": \\":wdc:1420039695427\\"}","url":"/click","urlParsed":{"anchor":"","query":"","file":"click","directory":"/","path":"/click","relative":"/click","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/click","queryKey":{},"chunks":["click"]},"urlOriginal":"/session/7812e810-9100-11e4-881c-37067349397d/element/%3Awdc%3A1420039695427/click"}}' ; Screenshot: available via screen

ここで奇妙なのは、 をフォローしたりmy_browser.url、 を見my_browser.htmlたり試したりしたときにリンクが実際に存在することbrowser.show_screenshot(my_browser)です。

そして、可視性を待つという問題ではないようです。クリックの前にクイックを追加してimport time(); time.wait(5);もまだ機能しません (おそらくそれで十分ですが、それ以上待つこともできません)。

ここで何が欠けているのでしょうか?

4

1 に答える 1

1

ああ。Splinter は、最初に見つけたリンクをデフォルトに設定していますが、これは表示されていません。

(Pdb) [link.visible for link in my_browser.find_link_by_partial_href('/mystuff/' + str(important_number))]

[False, True]

この余分な隠しリンクは、そもそもそこにあるはずがありません。これは、一見無関係な部分であっても、コードについて仮定を行うと何が起こるかを示しています!

于 2014-12-31T16:03:59.720 に答える