当前位置: 首页 > 面试题库 >

在python中使用Selenium Webdriver进行显式等待查找元素

赵兴朝
2023-03-14
问题内容

我正在尝试使用链接文本查找元素,我正在使用以下代码

handle = driver.window_handles
#handle for windows
driver.switch_to.window(handle[1])
#switching to new window
link = wait.until(EC.presence_of_element_located((By.LINK_TEXT, "Followers ")))

而且我正在追踪

Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
link = wait.until(EC.presence_of_element_located((By.LINK_TEXT, "Followers ")))
File "C:\Python27\lib\site-packages\selenium\webdriver\support\wait.py", line 71, in until
raise TimeoutException(message)
TimeoutException: Message: ''

我尝试选择的元素的HTML是

<a href="/Kevin-Rose/followers">Followers <span class="profile_count">43,799</span></a>

我怎么解决这个问题??


问题答案:

如果您使用By.LINK_TEXT,则应该有一个包含该文本的链接:Followers,但是您有Followers 43,799

对于您的情况,应By.PARTIAL_LINK_TEXT改为使用:

wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, 'Followers')))

更新 这是工作示例:

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

driver = webdriver.Chrome()  # CHANGEME
driver.get('http://www.quora.com/Kevin-Rose')
element = WebDriverWait(driver, 2).until(
    EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "Followers"))
)
element.click()


 类似资料:
  • 我实际上有三个问题: Selenium WebDriver如何实现此 因为我们不能给无限睡眠的线程一个负值。 有没有更好的方法来实现无限等待? 我们在SeleniumWebDriver文档中看到了这一点

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

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

  • 我最近一直在搞乱C#中的selenium。我偶然发现了一个我目前无法解决的问题。基本上,我试图打开网站左上角的汉堡包“菜单”,并悬停到它的第一个菜单项:“Loterie”,这应该会触发另一个子菜单,在汉堡包菜单旁边弹出一些“子选项”到“Loterie”。 场景将是:菜单->Loterie->用户能够看到这些选项:Sportka/Eurojackpot/Rychle Kacky/等等... 首先,我

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

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