我如何等待C#Selenium中另一个元素的元素

时间:2018-05-01 04:36:30

标签: c# selenium wait

有没有办法通过某种方式从另一个元素而不是从整个驱动程序中搜索元素来执行wait.Until

示例:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSec));

IWebElement element = wait.Until(ExpectedConditions.ElementExists(by));

我无法将'by'修改为过于具体,以及何时在驱动程序下搜索并获取错误的元素。

IWebElement element = wait.Until(drv => drv.FindElement(by));

此选项还会在driver下搜索。 我想要这样的东西:

public static IWebElement WaitElement(this IWebElement webElement, IWebDriver driver, By by, int timeoutInSec = 5)
    {
        try
        {
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSec));
                IWebElement element = wait.Until(webElement.FindElement(by));
        }

当我尝试编写此代码时,我收到此错误:

enter image description here

1 个答案:

答案 0 :(得分:0)

可能已经晚了,但希望能对别人有所帮助。只需将第3个选项中最后一行的语法更改为以下内容:

IWebElement element = wait.Until(d => webElement.FindElement(by));