如何在使用 WebDriverWait 加载它之前识别我正在寻找的元素

Posted

技术标签:

【中文标题】如何在使用 WebDriverWait 加载它之前识别我正在寻找的元素【英文标题】:How can I identify the element I am looking for prior to it being loaded using WebDriverWait 【发布时间】:2021-10-21 02:15:52 【问题描述】:

我正在使用 Appium 为 WPF 桌面应用程序编写测试。我需要等待一个元素出现。我有以下代码:

WebDriverWait testWait = new WebDriverWait(driver, TimeSpan.FromSeconds(7));
            
var userName = driver.FindElementByName("userNameBox");

testWait.Until(pred => userName.Displayed);

由于未设置 userName 变量(第二行),此代码失败 - '使用给定的搜索参数无法在页面上找到一个元素。'

显然这是因为元素尚未加载——这就是代码的重点。但是,在加载之前我如何识别我正在寻找的元素呢?

【问题讨论】:

【参考方案1】:

您可以通过ExpectedConditions 等待此元素可见性。 像这样的:

testWait.until(ExpectedConditions.visibilityOfElementLocated(By.name("userNameBox")));

【讨论】:

我不太确定这里的语法。你没有提到你的绑定语言......这就是它在 Java / Selenium 中的样子。如果您使用 C# 编码,则可能是一些大写字母,而我使用小写字母 :) 等。 谢谢,试试这个!

以上是关于如何在使用 WebDriverWait 加载它之前识别我正在寻找的元素的主要内容,如果未能解决你的问题,请参考以下文章

Python Selenium.WebDriverWait 最强详解页面加载策略

WebDriverWait显示等待源码剖析

webdriverwait 是哪个包引入的

使用webdriverwait封装查找元素方法

Web自动化测试:WebDriverWait元素等待和全局设置

显示等待WebDriverWait