当前位置: 首页 > 知识库问答 >
问题:

Selenium: NoSuchElementExcture即使在使用显式等待之后

燕鸿文
2023-03-14

我正在寻找一个元素http://ntry.com/#/stats/ladder/round.php,但在尝试了几种方法后,我一直未能找到它,包括通过css选择器的ind_元素,通过xpath的ind_元素。。。等等

即使我使用WebDriverWait,我还是失败了。有什么问题吗?

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

driver = webdriver.Firefox()
driver.get("http://ntry.com/#/stats/ladder/round.php")

try:
   element = EC.presence_of_element_located((By.XPATH, '//div[@id="analysis-table"]/div[1]/div[1]/p[1]/span[1]/strong'))

   #or element = WebDriverWait(driver, 30).until(
       EC.presence_of_element_located((By.CSS_SELECTOR, "#analysis-table>div.bar_graph>div:nth-child(1)>p.left.on>span.per>strong"))
   )
except:
   print "HIJUDE"

driver.quit()

我使用隐式等待,但这也会产生相同的错误。不使用Wait也会导致NoTouchElementException。

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":'//div[@id="analysis-table"]/div[1]/div[1]/p[1]/span[1]/strong'}

网站是否与找不到元素有关?或者使用Xpath或css_selector以外的方法?我很困惑为什么会这样。

-------------Edit------------我发现在div[@id=“analysis table”]的xpath上层有iframe。我想这就是原因。我应该一直使用驱动程序吗。在这种情况下,是否将_切换到_frame()?顺便说一句,我是司机。将_切换到与frame()不同的_窗口()?

共有1个答案

江正德
2023-03-14

您在p中遇到问题。打开路径中的。一个元素具有单个类,另一个元素具有类。应该是

"#analysis-table>div.bar_graph>div:nth-child(1)>p.left>span.per>strong"

"#analysis-table>div.bar_graph>div:nth-child(1)>p.right.on>span.per>strong"
 类似资料:
  • 问题内容: 我在用: 但是对于以下元素它仍然连续失败 我添加了等待代码: 隐式等待是否应该等到找到一个元素后再进行处理?如果我使用而不是我添加的代码,还会更好吗? 问题答案: TL; DR:始终使用显式等待。忘记隐式等待的存在。 以下是显式等待与隐式等待之间的区别的简要概述: 显式等待: 记录和定义的行为。 在硒的本地部分运行(以你的代码语言显示)。 可以在你能想到的任何条件下工作。 返回成功或超

  • 创建驱动程序时,我已将隐式等待设置为10秒。当我希望使用显式等待时,是否必须将隐式等待设置为0? 以下是一个示例: 我必须做webDriver.manage()。超时()。秒);还是没有必要?

  • 考虑以下代码 结果如下: notifyAll()在13毫秒时被调用。但是,控件仅在10016毫秒时退出等待()。 从上面给出的代码中可以看出,在进行了通知()调用之后,等待()调用似乎没有立即结束。 但是,包括Java API在内的所有文档都指定,调用wait()的方法应该在notify()调用之后立即获得锁。 如果在调用通知()时等待()不会结束,那么对通知()的需求就会变得无效,因为即使没有调

  • 问题内容: 我是初学者。我了解基本等待的内容,但是我对互联网上的不同教程如何放置并进行解释感到困惑。例如,在下面的代码中,将其放置在加载URL之前。因此,是否只是等待URL加载或查找元素或两者兼而有之?的确,如果我在try块中使用一次隐式等待,它是否适用于我在代码中执行的每个元素搜索? 问题答案: 隐式等待 ImplicitWait按照该Java文档是指定的时间量 webdriver的 情况下,即

  • 我是初学者。我了解Wait的基本功能,但我对互联网上不同的教程如何放置和解释它感到困惑。例如,在下面的代码中,它是在加载URL之前放置的。那么,是只等待加载URL,还是等待查找元素,或者两者都是?如果我在try块中使用隐式等待一次,它将适用于我在代码中执行的每个元素搜索,这是真的吗?

  • 我正在尝试自动化基于共享点的应用程序,它有时会很慢。在下面的示例中,我试图将密码输入包装成显式等待。目前,Selenium以快速运行测试,导致无法执行操作。 如何将密码部分包装成硒显式方式?