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

关于Selenium Webdriver中隐式等待的问题

雷逸仙
2023-03-14

我正在阅读有关Webdriver隐式等待的文档,但我不确定我是否完全理解。

据我所知,

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

这将在查找任何元素时设置10秒的超时。

这到底是干什么用的?

>

  • 这是否意味着在查找任何元素时,即使该元素存在,我每次都会等待10秒?或者,在查找任何元素时,驱动程序是否会在确定缺少元素之前为浏览器提供 10 秒的宽限期来加载元素?

    由于这适用于每个元素,我是否正确地假设对于Webdriver的每个实例只执行一次?

  • 共有2个答案

    施弘壮
    2023-03-14

    在项目中全局定义等待时间。你告诉你的司机等待n秒,然后硒才会引发异常。如果之前找到元素,那么您提到的n秒数,Webdriver将在可用时单击它,并且不会等待最大n秒数。在引发异常之前,它必须等待。

    朱锦
    2023-03-14

    这将寻找元素长达10秒,尝试每500毫秒定位一次(默认超时)。

    从文档中

    指定当搜索一个元素时,如果该元素没有立即出现,驱动程序应该等待的时间。

    搜索单个元素时,驱动程序应轮询页面,直到找到该元素,否则此超时将在引发 NoSuchElementException 之前过期。搜索多个元素时,驱动程序应轮询页面,直到找到至少一个元素或此超时已过期。

    定位算法在W3C规范中描述

    “查找元素”、“查找元素”、“从元素查找元素”和“从元素查找元素”命令允许查找单个元素和元素集合。元素检索搜索是使用与所提供的选择器的表达式匹配的文档节点的预排序遍历来执行的。元素被序列化并作为 Web 元素返回。

    当要求用实参查找起始节点时,使用and值,远端必须运行以下步骤:

    >

  • 让结束时间为当前时间加上会话隐式等待超时。

    让定位策略等于使用。

    让选择器等于值。

    让返回的元素成为尝试调用相关元素位置策略的结果,参数为起始节点和选择器。

    如果在执行元素位置策略期间发生DOMException、SynTaxError、XPathException或其他错误,则返回错误无效选择器。

    如果返回的元素为空,并且当前时间小于结束时间,则返回到步骤 4。否则,请继续执行下一步。

    让结果为空的 JSON 列表。

    对于返回的元素中的每个元素,将元素的序列化附加到结果。

    返回带有数据结果的成功。

    隐含等待WebDriver定义一次并持续其生命周期。

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

    • 驱动程序级别的隐式和显式等待之间有什么区别。哪一个是驱动级等待。如果我们在代码中提供隐式和显式等待。哪一个优先。

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

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

    • 我如何用一个显式的替换这个隐式的等待呢? driver=新ChromeDriver(功能); driver.manage().DeleteAllCookies();

    • 我在Java使用Webdriver,我需要等待一个元素,它有一个动态ID显示在网页上。 例如,对于隐式wait,我有以下语句:WebDriverWait wait=new WebDriverWait(driver,30);Wait.Until(ExpectedConditions.VisibilityOfElementLocated(By.id(“DynamicId”))) 是我正在等待的元素ID