将 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;">
有没有一种方法可以在像上面那样设置代码时点击所有的展开?
谢谢。
您不能依赖提供的带有 id
的 div
元素,因为它们不可见。在这种情况下,您将得到 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
希望对您有所帮助。
我正在尝试使用 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;">
有没有一种方法可以在像上面那样设置代码时点击所有的展开?
谢谢。
您不能依赖提供的带有 id
的 div
元素,因为它们不可见。在这种情况下,您将得到 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
希望对您有所帮助。