【问题标题】:Selenium: selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:Selenium:selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:
【发布时间】:2020-02-24 11:30:04
【问题描述】:

我的代码:

driver.find_element_by_xpath("//div[@class='x-grid3-cell-inner x-grid3-col-1']//a").click() # Click on Device eid

time.sleep(15)
driver.find_element_by_xpath("//table[@id='ping']//button[contains(text(),'Ping')]").click() # click on Ping

得到错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: 

在 Chrome 和 firefox 上 xpath 是正确的,但仍然出现错误?谁能帮忙,我知道这很傻

一个。

【问题讨论】:

  • 首先您必须将 url 添加到此页面,以便我们可以看到完整的 HTML。也许元素在<frame> 内,你必须使用driver.switch_to.frame(...)
  • 它是我公司的内部应用程序。有没有其他办法?
  • 首先检查项目是否为<frame>。如果没有框架,则检查 xpath 是否有更短的内容,即。 "//table[@id='ping']"
  • 非常感谢 Furas,问题已解决,有一个框架。我实现了框架概念。 :)

标签: python selenium-webdriver


【解决方案1】:

检查元素是否在iFrame标签下,如果是则首先需要切换到框架然后执行预期的操作。

iframe = driver.find_element_by_name('frame_name')

driver.switch_to.frame(iframe)

如果它的时间相关问题,那么在你的代码中引入隐式和显式等待。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@class='x-grid3-cell-inner x-grid3-col-1']//a"))
element.click()

希望这会有所帮助

【讨论】:

  • 感谢 Narendra,这是 iFrame 问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多