泛型方法所以我創造了這個通用尋找元素功能:爲硒FindElement功能
public static IWebElement FindElement(IWebDriver driver, Func<IWebDriver, IWebElement> expectedCondtions, int timeoutInSeconds)
{
WebDriverWait webDriverWait = CreateWebDriverWait(driver, finder,timeoutInSeconds);
webDriverWait.IgnoreExceptionTypes(typeof(NoSuchElementException));
return webDriverWait.Until(expectedCondtions);
}
public static ReadOnlyCollection<IWebElement> FindElements(IWebDriver driver, Func<IWebDriver, ReadOnlyCollection<IWebElement>> expectedCondtions, int timeoutInSeconds)
{
WebDriverWait webDriverWait = CreateWebDriverWait(driver, finder, timeoutInSeconds);
webDriverWait.IgnoreExceptionTypes(typeof(NoSuchElementException));
return webDriverWait.Until(expectedCondtions);
}
private static WebDriverWait CreateWebDriverWait(IWebDriver driver, IWebElement finder, int timeoutInSeconds)
{
WebDriverWait webDriverWait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
webDriverWait.IgnoreExceptionTypes(typeof(NoSuchElementException));
return webDriverWait;
}
用法:
IWebElement element=
WaitAndFindElement(
driver,
ExpectedConditions.ElementIsVisible(By.CssSelector("...")),
120);
現在我萬特添加到找到element
也沒有使用driver
的選項。 例如,而不是driver.FindElement
我想從另一個element
搜索元素:
IWebElemen element = ...
element.FindElement...
所以我想從改變我的函數簽名:
IWebElement FindElement(IWebDriver driver,Func<IWebDriver, IWebElement> expectedCondtions, int timeoutInSeconds)
要:
IWebElement FindElement(IWebDriver driver, IWebElement finder, Func<IWebDriver, IWebElement> expectedCondtions, int timeoutInSeconds)
如果finder
爲空我想用driver.FindElement
進行搜索。 否則:finder.FindElement
所以我的問題是如何做到這一點?
你需要驅動程序的第二個場景?聽起來像是這樣或那樣,這是正確的嗎? – Delta
爲什麼要爲簡單的Selenium函數創建一個包裝?這完成了什麼?無論如何,你可以在一兩行中完成大部分工作。每次調用函數時,即使它使用相同的超時值,也會創建一個新的'WebDriverWait'實例。 – JeffC