using BrowserHelper.Driver; using BrowserHelper.Extensions; using BrowserHelper.Settings; using DataDomain; using OpenQA.Selenium; using StockDAL.Interface; namespace StockDAL { public class StockScrapePage : IStockScrapePage { private readonly IWebDriver _driver; private readonly TestSettings _testSettings; public StockScrapePage(IDriverFixture driver, TestSettings testSettings) { _driver = driver.Driver; _testSettings = testSettings; } //IWebElement lnkProduct => _driver.FindElement(By.LinkText("Product")); //IWebElement lnkCreate => _driver.FindElement(By.LinkText("Create")); //IWebElement tblList => _driver.FindElement(By.CssSelector(".table")); IWebElement tblList => _driver.FindElement(By.ClassName("millistream-list-table")); IWebElement chooseList => _driver.FindElement(By.Id("listselect")); public List GetMyStockStatus(string listText) { Thread.Sleep(500); chooseList.SelectDropDownByText(listText); Thread.Sleep(800); var stockListTuple = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols); return stockListTuple; } public List SearchStockAndCollect(string stockName) { var returnValue = new List(); IWebElement searchStock = _driver.FindElement(By.XPath("//*[@id='searchbox']/div/div[1]/input")); searchStock.ClearAndEnterText(stockName); //Console.WriteLine("SearchField filled out"); Thread.Sleep(1000); var clicker = searchStock.FindElements(By.XPath("//*[@id='searchbox']/div/div[2]/table/tbody/tr/td/a")); // Thread.Sleep(1000); //Console.WriteLine("Click-field searched"); if (clicker.FirstOrDefault() != null) { if (clicker.FirstOrDefault().Displayed) { var output = new DiTraderStockRow(); output.StockName = clicker.FirstOrDefault().Text; // Console.WriteLine("Click-field found"); //Thread.Sleep(1000); clicker.FirstOrDefault().Click(); Thread.Sleep(800); var valueField = _driver.FindElement(By.XPath("//*[@id='quote-details']/table/tbody/tr/td[5]")); //Console.WriteLine("value-field searched"); if (valueField.Displayed) { //Console.WriteLine("value-field found"); output.LatestPrice = decimal.Parse(valueField.Text == "" ? "-0,1" : valueField.Text); output.TimeOfDay = TimeSpan.Parse(DateTime.Now.ToString().Substring(11)); _driver.FindElement(By.XPath("//*[@id='equity-detail-page']/div[1]/div[1]/a")).Click(); returnValue.Add(output); return returnValue; } } } //Console.WriteLine("Click-field not found"); return null; } public void GetStocksPerList(string listText) { Thread.Sleep(500); chooseList.SelectDropDownByText(listText); Thread.Sleep(3000); var stocklist = tblList.ReadHandledStock(); string result = string.Empty; foreach (var stock in stocklist) { result += $"{listText}: {stock.ColumnValue} {System.Environment.NewLine}"; } File.WriteAllText($"Aktier_{listText}.txt", result); } //public void CreateProduct() //{ // lnkProduct.Click(); // lnkCreate.Click(); //} public void PerformClickOnSpecialValue(string name, string operation) { tblList.PerformActionOnCell("1", "Aktie", name, operation); } } }