将 Selenium 与 Python 一起使用:单击多个 'expand' 不包含 ID 的链接

Using Selenium with Python: Clicking multiple 'expand' links that don't contain ID's

我正在尝试使用 Selenium 和 Python 在 IE9 中填写表单。在表单中,有很多'Expand/Collapse'链接;它们之间的唯一区别是文本标签。此外,它们不包含 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;">

有没有一种方法可以在像上面那样设置代码时点击所有的展开?

谢谢。

您不能依赖提供的带有 iddiv 元素,因为它们不可见。在这种情况下,您将得到 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 或 link。

另请参阅:

  • issues in running selenium in internet explorer

希望对您有所帮助。