使用Selenium和Python:点击多个'展开'不包含ID的链接

时间:2015-01-20 18:39:06

标签: python html selenium expand

我正在尝试使用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;">

在设置代码时,有没有办法能够点击所有展开?

感谢。

1 个答案:

答案 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或指向所提供的目标网站的链接。

另见:

希望有所帮助。