雖然 FluentAutomation 語意比較完整
public class TestFluentAutomation : FluentTest
{
public void TestLogin()
{
var testUrl = "";
I.Open(testUrl);
I.Enter("test").In("#account");
I.Enter("123456").In("#password");
I.Click("input[type=\"submit\"]");
}
}
但有時候要做一些JavaScript 的操作時,卻又想要回頭用 IWebDriver
例如 : Scroll
((IJavaScriptExecutor)Driver).ExecuteScript($"window.scrollBy(0,{100})");
或者取得屬性
var span = Driver.FindElement(By.TagName("span"));
var text = span.GetAttribute("aria-label");
安裝 FluentAutomation.SeleniumWebDriver

安裝 Selenium.Chrome.WebDriver

其實做的事情就是繼承 FluentTest , 然後未來使用改使用 CFluentTest 就可以呼叫 Driver 使用 IWebDriver
/// <summary>
/// 自訂 FluentTest ,產生 ChromeDriver 與 baseURL
/// </summary>
public class CFluentTest : FluentTest
{
protected IWebDriver Driver;
public CFluentTest()
{
FluentAutomation.FluentSettings.Current.ScreenshotPath = @"D:\Capture";
ChromeOptions options = new ChromeOptions();
//不註解的話,會隱藏背景執行
//options.AddArgument("--headless");
Driver = new ChromeDriver(options);
FluentSettings.Current.ContainerRegistration = (container) =>
{
FluentTest.IsMultiBrowserTest = true;
var webDrivers = new List<Func<IWebDriver>> {() => Driver};
var commandProviders =
new CommandProviderList(
webDrivers.Select(x => new CommandProvider(x, new LocalFileStoreProvider())));
container.Register<CommandProviderList>(commandProviders);
container.Register<ICommandProvider, MultiCommandProvider>();
container.Register<IAssertProvider, MultiAssertProvider>();
container.Register<IFileStoreProvider, LocalFileStoreProvider>();
};
}
}
一個簡單的應用,自動按讚範例
public class WebPlayer : CFluentTest
{
public void Play()
{
I.Open(BaseUrl);
I.Enter("account").In("input[name=\"username\"]");
I.Enter("password").In("input[name=\"password\"]");
Driver.FindElement(By.Name("password")).SendKeys(Keys.Enter);
System.Threading.Thread.Sleep(1000);
((IJavaScriptExecutor)Driver).ExecuteScript($"window.scrollBy(0,{100})");
var elements = Driver.FindElements(By.ClassName("coreSpriteHeartOpen"));
var span = elements[0].FindElement(By.TagName("span"));
var text = span.GetAttribute("aria-label");
if (text == "讚")
{
elements[0].Click();
}
Driver.Close();
Driver.Dispose();
}
}
