【问题标题】:python selenium unable to locate a table id which existspython selenium 无法找到存在的表 id
【发布时间】:2016-07-13 19:52:25
【问题描述】:

我想在下面的html代码中找到“160528”元素:

<td class="calCell">
    <div id="cal1">
        <div align="center">
            <table id="table1">
                <tbody>
                    <tr></tr>
                        <td>
                            <a id="160528"></a>
                        </td>
                </tbody>
            </table>
        </div>
    </div>
</td>

我所做的是:

calCell = driver.find_element_by_class_name('calCell')
cal1 = calCell.find_element_by_id('cal1')
table1 = cal1.find_element_by_id('table1')

程序会报错“无法定位元素”,但是table1确实存在。

有没有人可以分享一些关于如何定位 160528 的信息?除了一个个去子元素,还有什么更简单的方法吗?

【问题讨论】:

  • 你试过item = driver.find_element_by_id("160528")
  • 是的,我确实尝试过。但硒似乎无法在子元素中找到任何项目:(

标签: python selenium html-table


【解决方案1】:

搜索时该表可能不存在。添加等待:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
table1 = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".calCell #cal1 #table1")))

【讨论】:

  • 谢谢alecxe。我很抱歉我的错字。我为 calCell 所做的是 find_element_by_class_name()。但我仍然找不到“160528”:(
  • 难以置信,这是延迟导致无法访问表。你又中招了!!!感谢上帝,我不需要在这个周末浪费更多时间来调试这个问题:)
猜你喜欢
  • 2019-09-02
  • 2021-10-18
  • 2022-07-28
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 2018-01-10
相关资源
最近更新 更多