我创建了一个Selenium Console Bot,现在我想用WPF启动它。所以我创建了一个简单的窗口并添加了一个按钮,它应该启动我的机器人,我已经重写为WPF。它启动并运行,但它崩溃了xaml窗口并打开一个控制台(不应该发生或应该?)。然后它将控制台留空,并在Visual Studio控制台中记下它应该是什么。当我启动方法CheckItems(_driver)
时会发生这种情况。任何可能的解决方我不介意启动一个控制台在后台运行,但为什么它会崩溃主窗口,所以我不能移动它或用它做任何事情?
private IWebDriver Setup(IWebDriver driver)
{
var option = new ChromeOptions();
option.AddArgument("--headless");
option.AddArgument("--silent");
option.AddArgument("--disable-gpu");
option.AddArgument("--log-level=3");
var service = ChromeDriverService.CreateDefaultService();
service.SuppressInitialDiagnosticInformation = true;
_driver = new ChromeDriver(service, option);
//driver.Navigate().GoToUrl("");
_driver.Navigate().GoToUrl("urlofmychoice");
_driver.Manage().Window.Maximize();
_driver.Manage().Timeouts().ImplicitWait =
TimeSpan.FromSeconds(7); // breaks in between actions taken by webDriver
_driver.FindElement(By.XPath("/html/body/div[2]/div/a")).Click(); // click got it (need to add fake cookie)
_driver.FindElement(By.Id("header-email"))
.SendKeys("myemail"); // enters my login (need to make it adjustable)
_driver.FindElement(By.Id("header-password"))
.SendKeys("mypassword" + Keys.Enter); // enters my password (need to make it adjustable)
var username = _driver.FindElement(By.XPath("/html/body/header/section[1]/div/div[2]/div/a/span"))
.Text; // Get username from the site and saves to username
tradeUrl = "ulrIneed" + username; // initialize tradeUrl
//_driver.Navigate().GoToUrl(tradeUrl); // goes to tradeUrl
return _driver;
}
private void CheckItems(IWebDriver driver)
{
while (true)
{
_driver.Navigate().GoToUrl(tradeUrl);
var trades = _driver.FindElements(By.ClassName("rlg-trade-display-header")); // add all trades to list
for (var i = 0; i < trades.Count; i++) // loop to check all trades
{
if (i == 0)
Console.WriteLine("\n Active Trades: " + trades.Count);
var text = _driver
.FindElement(By.XPath(
"/html/body/main/div/div/div/div[4]/div[" + (i + 1) + "]/div[1]/div/div/span"))
.Text.Split(); // reads text from trade and adjust it for the program
var test = "Trade " + (i + 1) + " was last updated " + text[1] + " " + text[2] + " ago.";
Console.WriteLine(test);
var x = int.Parse(text[1]); // convert string to int to check time later
if (text[2] == "seconds")
continue;
if (text[2] == "hours" || text[2] == "hour" || text[2] == "days" || text[2] == "day" ||
text[2] == "month" || text[2] == "months" || x > 15)
{
var element1 =
_driver.FindElement(By.XPath("/html/body/main/div/div/div/div[4]/div[" + (i + 1) +
"]/div[1]/a/div"));
var actions1 = new Actions(_driver);
actions1.MoveToElement(element1).Click()
.Perform(); // scrolls down to choosen element and clicks it
_driver.FindElement(By.XPath("/html/body/main/div/div/div/div[2]/a[1]"))
.Click(); // click choosen element
var element = _driver.FindElement(By.Name("btnSubmit"));
var actions = new Actions(_driver);
actions.MoveToElement(element).Click()
.Perform(); // scrolls down to choosen element and clicks it
driver.Navigate().GoToUrl(tradeUrl);
Thread.Sleep(2000);
}
}
Thread.Sleep(15000); // wait 15 second before next loop
}
}
private void BtnStart_OnClick(object sender, RoutedEventArgs e)
{
Setup(_driver);
CheckItems(_driver);
}
}