「Next」ボタンをクリックして、HubSpot.com上のランディングページをループさせようとしているPythonでSeleniumを使用してオートメーションフレームワークを構築しています。PythonでSeleniumを使用してページを切り替える
次のボタンがクロームインスペクタに応じて、以下のHTMLにあります。
<a class="next" data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0">
<span data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0.1">Next</span>
<span class="right" data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0.2"></span>
</a>
そして、私は次のPythonコードを使用してボタンをクリックしています:
time.sleep(3)
wait(self.driver, """//a[@class="next" and not(@disabled)]""")
nextButton = self.driver.find_element(By.XPATH, """//a[@class="next" and not(@disabled)]""")
hov = ActionChains(self.driver).move_to_element(nextButton)
hov.click().perform()
私の待ち時間( )関数は次のように定義されます。
def wait(dr, x):
element = WebDriverWait(dr, 5).until(
EC.presence_of_element_located((By.XPATH, x))
)
return element
これは最初のページで完全に正常に動作します。しかし何らかの理由で2ページ目になるとボタンをクリックすることができません。エラーはなく、3ページ目には何をすべきかが始まりますが、2ページ目になります。また、2ページ目の[次へ]ボタンをクリックする直前にスクリプトを停止すると、そのボタンがChromedriverで強調表示されていることがわかります。
次へ]ボタンはクロームインスペクタ::
<a class="next" data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0">
<span data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0.1">Next</span>
<span class="right" data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0.2"></span>
</a>
任意の提案によると、2ページの以下のHTMLに位置していますか?私はアイデアがありません。
1回目と2回目のクリックの間にスリープを追加すると、突然動作しますか? –
私はこのコードを2回(1ページに1回)使用することをお勧めします。なぜ単純な 'click()'の代わりに 'ActionChains'を使うのですか? – Andersson
@LeviNoecker:私はすでにクリックの間に眠っています。残念ながら、これは何も変わりません。 – mfvas