我有一个简单的网站(https://www.orbismodding.com/),我想使其自动化。我使用selenium firefox webdriver来做到这一点,并创建了一个按钮单击以将文本发送到输入文件中,然后单击搜索按钮并将结果保存到我的代码文本框中:
private void mtboxCUSA_ButtonClick(object sender, EventArgs e)
{
string cusa = mtboxCUSA.Text;
FirefoxOptions firefoxBinary = new FirefoxOptions();
firefoxBinary.AddArgument("-headless");
firefoxBinary.AddArgument("--width=300");
firefoxBinary.AddArgument("--height=300");
firefoxBinary.SetPreference("permissions.default.image", 2);
firefoxBinary.SetPreference("permissions.default.stylesheet", 2);
var ffds = FirefoxDriverService.CreateDefaultService();
ffds.HideCommandPromptWindow = true;
IWebDriver driver = new FirefoxDriver(ffds, firefoxBinary);
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30);
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
driver.Navigate().GoToUrl("https://www.orbismodding.com/");
wait.Until(ExpectedConditions.ElementExists(By.CssSelector("#titleID")));
driver.FindElement(By.CssSelector("#titleID")).SendKeys(cusa);
driver.FindElement(By.Name("searchBtn")).Click();
wait.Until(ExpectedConditions.ElementExists(By.XPath("/html/body/div/div/h3")));
string gname = driver.FindElement(By.XPath("/html/body/div/div/h3")).Text;
btboxCusaResult.Text = gname;
}
问题是,每当我单击按钮时,它都需要花费一些时间才能打开一个新的webdriver窗口来进行自动化!如何使用以前使用过的现有网络驱动程序?硒还有其他方法吗?(如HttpRequest)
您可以保持简单,并为driver和wait对象添加一个类变量。
您最终将得到以下内容:
IWebDriver driver;
WebDriverWait wait;
private void mtboxCUSA_ButtonClick(object sender, EventArgs e)
{
string cusa = mtboxCUSA.Text;
if(driver == null)
{
FirefoxOptions firefoxBinary = new FirefoxOptions();
firefoxBinary.AddArgument("-headless");
firefoxBinary.AddArgument("--width=300");
firefoxBinary.AddArgument("--height=300");
firefoxBinary.SetPreference("permissions.default.image", 2);
firefoxBinary.SetPreference("permissions.default.stylesheet", 2);
var ffds = FirefoxDriverService.CreateDefaultService();
ffds.HideCommandPromptWindow = true;
driver = new FirefoxDriver(ffds, firefoxBinary);
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30);
wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
}
driver.Navigate().GoToUrl("https://www.orbismodding.com/");
wait.Until(ExpectedConditions.ElementExists(By.CssSelector("#titleID")));
driver.FindElement(By.CssSelector("#titleID")).SendKeys(cusa);
driver.FindElement(By.Name("searchBtn")).Click();
wait.Until(ExpectedConditions.ElementExists(By.XPath("/html/body/div/div/h3")));
string gname = driver.FindElement(By.XPath("/html/body/div/div/h3")).Text;
btboxCusaResult.Text = gname;
}
如果要测试到达网站的数据,并假设您在网站的后端具有REST Api,则可以针对API进行集成测试。在这种情况下,您将使用HttpClient进行测试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句