我有一个帮助函数来查看页面并打开找到的每个帮助按钮。这很好,很简单;使用Xpath单击页面上的所有元素会导致出现ElementNotVisibileException
def openHelp(ff):
"""
Opens all the help buttons on the screen
@type ff: instance of webdriver
@param ff: firefox instance of webdriver
"""
allHelpButtons = ff.find_elements_by_xpath('//a[@class="helpButton"]')
for helpButton in allHelpButtons:
helpButton.click()
但是在一些网页上的helpbuttons可以连同其相应的领域通过这似乎是什么原因造成的ElementNotVisibileException
当硒尝试点击这些隐藏的按钮JavaScript的隐藏。
每个帮助按钮在标记中都显示相同,没有应用display:none
,所以我无法像这样检查。他们看起来如此;
<a class="helpButton" title="Help about: Field" href="#">
<img alt="Help about: Field" src="/static/images/helpIcon.png">
</a>
如果这个例外存在,我假设必须有一个方法可以用来检查一个元素是否可见。理想情况下,我只想收集我的allHelpButtons
列表中的所有可见元素,但我无法在此找到任何文档。 我可以使用我的xpath搜索执行检查吗?或者我必须在收集元素后检查元素吗?
奖金问题
我也想知道,如果你可以通过匹配的名称和值选择列表项。例如,我在页面中定义了一个Yes/No单选按钮选项,作为ul
;
<ul class="compact horizontal ">
<li>
<input id="id_fieldname_0_true" type="radio" value="True" name="fieldname">
<label for="id_fieldname_0_true">Yes</label>
</li>
<li>
<input id="id_fieldname_0_false" type="radio" value="False" name="fieldname">
<label for="id_fieldname_0_false">No</label>
</li>
</ul>
显然,ID是唯一的,但我宁愿能够使用选择挑出来的“名”和“价值”,因为我觉得会更容易让普通的选择,我可以传递值。