我看到有人编写过一行这样的代码,它基本上通过传递webdriver,一些布尔条件的软件和一个等待条件得到满足的Timespan来解决硒点击的条件。它看起来像这样:
{{1}}
我想知道的是如何构建相同的方法。如何构建这样的自定义驱动程序单击方法?请帮忙。 C#的新手可以有人分享一些示例代码吗?
答案 0 :(得分:0)
为了实现这样的方法,首先需要理解几个概念。我不会解释所有这些并要求你搜索和阅读。
这是一个带有略微修改的签名的示例实现,即此实现不需要By.Xpath / By.Id等作为第一个参数:
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using System;
namespace SeleniumWebAutomation
{
public class WebElementWait : DefaultWait<IWebElement>
{
public WebElementWait(IWebElement element, TimeSpan timeout) : base(element, new SystemClock())
{
this.Timeout = timeout;
this.IgnoreExceptionTypes(typeof(NotFoundException));
}
}
public static class WebDriverExtension
{
public static void WaitAndClick(this IWebDriver driver, Func<IWebDriver,IWebElement> condition,TimeSpan timeSpan)
{
IWebElement webElement = new WebDriverWait(driver, timeSpan).Until(condition);
webElement.Click();
}
}
}
您现在可以调用它,如下所示:
//Wait for element to exist for up to 10 second before performing click operation
driver.WaitAndClick(ExpectedConditions.ElementExists(By.XPath("xpath value")),TimeSpan.FromMilliseconds(10000));
//Wait for element to be visible for up to 5 second before performing click operation
driver.WaitAndClick(ExpectedConditions.ElementIsVisible(By.Id("Id")),TimeSpan.FromMilliseconds(5000));
请注意,我使用了内置帮助程序类 ExpectedConditions 它有几个方法,如ElementExists(),ElementIsVisible()等。给定位器返回一个Func。如果在指定的超时内提供的示例中未分别找到/不显示元素,则将抛出异常。
此致 Nish26