【问题标题】:Selenium click dynamic linkSelenium 点击动态链接
【发布时间】:2013-11-14 12:31:56
【问题描述】:

我有一个类似这样的页面结构:

<html>
    <head/>
    <frameset>
        <frame/>
        <frameset id="id1">
            <frame/>
            <frame id="id2">
                <html>
                    <head/>
                    <body class="class1">
                        <form id="id3">
                            <input/>
                            <input/>
                            <input/>
                            <input/>
                            <table/>
                            <table/>
                            <table/>
                            <div id="id4">
                                <div id="id5">
                                    <table id="id6">
                                        <thead/>
                                        <tbody>
                                            <tr/>
                                            <tr/>
                                            <tr/>
                                            <tr>
                                                <td/>
                                                <td/>
                                                <td>
                                                    <a href="dynamic link">Text</a>

我需要点击动态链接 - 表格内的链接和位置各不相同,但文字始终相同。

我尝试过使用 find_element_by_link_text,但失败了。

使用 xpath 找不到表单元素。

谢谢。

【问题讨论】:

    标签: python selenium automation webdriver


    【解决方案1】:

    您需要先切换到包含&lt;a&gt; 元素的框架。您的代码将如下所示:

    driver.switch_to_frame('id3')
    driver.find_element_by_link_text('TEXT').click()
    

    请注意,上面的代码只是一个近似值,因为您提供的 HTML 代码只是一个近似值。特别是,您有一个 &lt;frameset&gt; 元素作为另一个 &lt;frameset&gt; 元素的直接子元素,我认为这是无效的 HTML。如果您确实有嵌套的框架集,则需要多次调用 switch_to_frame 以向下导航框架层次结构,直到您的焦点位于包含您正在查找的元素的文档的框架上。

    【讨论】:

      【解决方案2】:

      您可以首先使用以下命令查找页面中的所有标签: find_elements_by_tag_name

      然后遍历每个 a 标签并检查其文本,因为文本始终相同

      a_tags = driver.find_elements_by_tag_name('a')
      for a in a_tags:
          if a.text == 'TEXT':
              a.click()
      

      【讨论】:

      • 鉴于上述 HTML,仍然无法正常工作。正在寻找的链接在框架内,即使find_elements_by_tag_name 也不会在子框架的文档中找到元素。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 2014-10-06
      • 2013-02-06
      • 1970-01-01
      相关资源
      最近更新 更多