ChromeでSelenium Webdriverを使用してWebクローラーを構築しています。それは使用しています
links = self.browser.find_elements_by_xpath("//*[@href]")
ページ上のすべてのリンクを取得し、リンクをループ処理してフィルタリングします。ただし、私がテストしたすべてのサイトで、特定のページの特定のリンクに到達すると、次の行で停止します。
url = link.get_attribute("href")
これはエラーではなく、無限ループに陥ったかのように停止するだけです。特定のサイトでは、テストの実行ごとに常に同じページの同じリンクにあります。Firefox では停止は発生しません。すべて正常に動作します。ただし、他の理由で Chrome を使用してこれを行う必要があります (これについては信頼してください)。
私が使用している Chrome のバージョンは 28.0.1500.52 で、そのバージョンと互換性のある最新の Chrome ドライバーを使用しています。ここで何が起こっているのでしょうか?
編集 (この編集は無視してください)
もう少し調べたところ、問題の原因がわかりました。見つかったすべてのリンクの上にマウスを置くコードのさらに下の部分があります。
hov = ActionChains(self.browser).move_to_element(link)
hov.perform()
その部分をコメントアウトすると、うまくいきます。ここで、なぜこれが Selenium リンク オブジェクトから href 属性を取得することに何らかの影響を与えるのかを理解する必要があります (特に、最初の任意の数のリンク オブジェクトに対して正常に機能する場合)...
編集2
最初の編集は無視してください。