我正在尝试使用Selenium和Python在IE9中填写表单。在表单中,有很多“展开/折叠”链接;它们之间的唯一区别是文本标签。此外,它们不包含ID,只有'style'和'onclick'(它下面有一行ID,可能用于查看父的?)。我需要能够单击表单中的每个扩展,但是现在我甚至无法单击其中一个(IE9似乎不太喜欢xpath,并且没有要搜索的ID)。这是我正在使用的HTML部分:
<tr>
<td colSpan="4">
<legend style="cursor: hand;" onclick="expandCollapse(this,'Name1')">
Text - Name1 (
<u>
Text - Expand
Text - )
<div id="Naming1" style="display: none;">
<tr>
<td colSpan="4">
<legend style="cursor: hand;" onclick="expandCollapse(this,'Name2')">
Text - Name2 (
<u>
Text - Expand
Text - )
<div id="Naming2" style="display: none;">
在设置代码时,有没有办法能够点击所有展开?
感谢。
答案 0 :(得分:0)
您不能依赖div
提供的id
元素,因为它们不可见。在这种情况下,您将获得ElementNotVisible
例外。
相反,请尝试以下选项:
driver.find_elements_by_xpath('//tr/td[@colSpan="4"]/legend[@onclick]')
driver.find_elements_by_xpath('//legend[starts-with(@onclick, "expandCollapse")]')
driver.find_elements_by_css_selector('legend[onclick^="expandCollapse"]')
driver.find_elements_by_tag_name('legend')
有更多可能的方法来访问legend
元素。我提供多种选择的原因是没有完整的页面HTML或指向所提供的目标网站的链接。
另见:
希望有所帮助。