典型的なアコーディオン スタイルでコンテンツを表示/非表示にする一連の div があります。HTML は次のようになります。
<div class="accordionContainer">
<div class="accordion">
<h3>Click This</h3>
<div class="accordionContent" style="display:none">
</div>
</div>
<div class="accordion">
<h3>Click This</h3>
<div class="accordionContent" style="display:none">
</div>
</div>
</div>
次に、python で最初の H3 を選択してから、 にあるリンクを開きaccordionContent
ます。
WebDriverWait(ff, 10).until(lambda driver : driver.find_element_by_xpath("id('main_content')/div[3]/div/div/div[1]/h3[1]")).click()
WebDriverWait(ff, 10).until(lambda driver : driver.find_element_by_xpath("id('main_content')/div[3]/div/div/div[1]/div/p/a")).click()
私はこれを実行し、動作するのを見ました。ただし、ほとんどの場合、失敗します。最初の div がクリックされます (小さな矢印が回転してコンテンツが表示されますが、すぐにデフォルトに戻り、エラーが発生するため、2 回クリックされたようです。
[exec] selenium.common.exceptions.ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with'
奇妙なことに、クリックされたように見えるが開いていない場合は、同じ click() 行をもう一度呼び出すと機能します。
その 2 番目の xpath を進めて、accordionContent
が に変更されたことを確認できdisplay: block
ますか?