【发布时间】:2012-04-12 13:33:46
【问题描述】:
我有一组 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 被点击(我可以看到它上面的一个小箭头旋转以显示内容,但它似乎被点击了两次,因为它立即返回默认值并且我收到错误;
[exec] selenium.common.exceptions.ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with'
奇怪的是,如果您再次调用同一 click() 行,则可以看到它被点击但未打开。
能否推进第二个 xpath 以检查 accordionContent 是否已更改为 display: block?
【问题讨论】: