【问题标题】:Locating Table Element by xPath in Python Selenium在 Python Selenium 中通过 xPath 定位表元素
【发布时间】:2017-08-03 01:54:26
【问题描述】:

我复制了我试图点击的某个元素的 xPath 并获得了以下内容:

//*[@id="ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0"]/td[1]/a

然后我的代码包含以下内容:

driver.find_element_by_id("//*[@id="ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0"]/td[1]/a").click()

知道为什么我可能会收到此错误:r aise exception_class(消息,屏幕,堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素

【问题讨论】:

  • "//*[@id="ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0"]/td[1]/a" 不是 Python 中的有效字符串,请尝试:'''//*[@id="ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0"]/td[1]/a'''
  • 它仍然找不到元素。使用 //* 而不是 //table 有什么问题吗?我都试过了,但我觉得那里可能有错误
  • 这是一个 XPATH - 使用 driver.find_element_by_xpath 而不是 find_element_by_id
  • 对!太感谢了。明白了!

标签: python html selenium


【解决方案1】:

XPATH 可能包含id(或许多其他HTML 标记),但这并不意味着id XPATH。使用:

driver.find_element_by_xpath('//*[@id="ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0"]/td[1]/a').click()

它应该可以工作 - 假设您网站上的那个位置有一个有效的 XPATH。

另外,回复:您对 OP 的评论 - //* 指定相对 XPATH 与绝对 XPATH - 本质上意味着它跳过初始和标签并直接进入 DOM 的中间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多