V4.4 merged
This commit is contained in:
110
Soak/Selenium.cs
110
Soak/Selenium.cs
@@ -39,54 +39,6 @@ namespace AiQ_GUI
|
||||
return elementID;
|
||||
}
|
||||
|
||||
// Attempts to click the web element with the specified ID; refreshes the page and retries once if the initial attempt fails
|
||||
public static void ClickElementByID(string elementID, ChromeDriver driver, bool tryagain = true)
|
||||
{
|
||||
try
|
||||
{
|
||||
WebDriverWait wait = new(driver, TimeSpan.FromSeconds(10));
|
||||
IWebElement element = wait.Until(driver => driver.FindElement(By.Id(elementID)));
|
||||
element.Click();
|
||||
}
|
||||
catch
|
||||
{
|
||||
if (tryagain)
|
||||
{
|
||||
driver.Navigate().Refresh();
|
||||
WebDriverWait wait = new(driver, TimeSpan.FromSeconds(10));
|
||||
wait.Until(d => ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState").Equals("complete"));
|
||||
ClickElementByID(elementID, driver, false);
|
||||
}
|
||||
|
||||
MainForm.Instance.AddToActionsList("Could not click " + elementID);
|
||||
}
|
||||
}
|
||||
|
||||
// Initialises and opens a ChromeDriver with specific options
|
||||
public static ChromeDriver OpenDriver()
|
||||
{
|
||||
try
|
||||
{
|
||||
ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService();
|
||||
chromeDriverService.HideCommandPromptWindow = true;
|
||||
ChromeOptions options = new();
|
||||
options.AddArguments("--app=data:,", "--window-size=960,1040", "--window-position=0,0");
|
||||
options.AddExcludedArgument("enable-automation");
|
||||
options.AddAdditionalChromeOption("useAutomationExtension", false);
|
||||
|
||||
ChromeDriver driver = new(chromeDriverService, options);
|
||||
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
|
||||
|
||||
return driver;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MainForm.Instance.AddToActionsList("Error Creating ChromeDriver " + ex.Message);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SwitchUser(ChromeDriver driver)
|
||||
{
|
||||
try
|
||||
@@ -127,6 +79,68 @@ namespace AiQ_GUI
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Attempts to click the web element with the specified ID; refreshes the page and retries once if the initial attempt fails
|
||||
public static void ClickElementByID(string elementID, ChromeDriver driver, bool tryagain = true)
|
||||
{
|
||||
try
|
||||
{
|
||||
WebDriverWait wait = new(driver, TimeSpan.FromSeconds(10));
|
||||
IWebElement element = wait.Until(driver => driver.FindElement(By.Id(elementID)));
|
||||
element.Click();
|
||||
}
|
||||
catch
|
||||
{
|
||||
if (tryagain)
|
||||
{
|
||||
driver.Navigate().Refresh();
|
||||
WebDriverWait wait = new(driver, TimeSpan.FromSeconds(10));
|
||||
wait.Until(d => ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState").Equals("complete"));
|
||||
ClickElementByID(elementID, driver, false);
|
||||
}
|
||||
|
||||
MainForm.Instance.AddToActionsList("Could not click " + elementID);
|
||||
}
|
||||
}
|
||||
|
||||
// Initialises and opens a ChromeDriver with specific options
|
||||
public static ChromeDriver OpenDriver()
|
||||
{
|
||||
string tempProfile = null;
|
||||
|
||||
try
|
||||
{
|
||||
ChromeOptions options = new();
|
||||
options.AddArguments("--app=data:,",
|
||||
"--window-size=960,1040",
|
||||
"--window-position=0,0",
|
||||
"--no-sandbox",
|
||||
"--incognito",
|
||||
"--no-first-run",
|
||||
"--no-default-browser-check",
|
||||
"--disable-features=BrowserAddPersonFeature,InterestFeedContentSuggestions");
|
||||
|
||||
// Use a unique temporary profile to avoid conflicts
|
||||
tempProfile = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
|
||||
options.AddArguments($"--user-data-dir={tempProfile}");
|
||||
|
||||
// manual driver path
|
||||
string driverPath = @"C:\ProgramData\MAV\AiQ_GUI";
|
||||
ChromeDriverService service = ChromeDriverService.CreateDefaultService(driverPath);
|
||||
service.HideCommandPromptWindow = true;
|
||||
|
||||
ChromeDriver driver = new(service, options);
|
||||
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
|
||||
|
||||
return driver;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MainForm.Instance.AddToActionsList("Failed to create ChromeDriver: " + ex.Message);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
// Changes the value of a dropdown element by ID, logs the action, and verifies the result using flashline feedback
|
||||
public static async Task Dropdown_Change(string fullId, string value, ChromeDriver driver, string SoakLogFile, string CamAct)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user