diff --git a/BrowserHelper/BrowserHelper.csproj b/BrowserHelper/BrowserHelper.csproj
index 974a7c8..0809928 100644
--- a/BrowserHelper/BrowserHelper.csproj
+++ b/BrowserHelper/BrowserHelper.csproj
@@ -11,4 +11,7 @@
+
+
+
diff --git a/BrowserHelper/Driver/BrowserDriver.cs b/BrowserHelper/Driver/BrowserDriver.cs
index d83aaed..3f042e9 100644
--- a/BrowserHelper/Driver/BrowserDriver.cs
+++ b/BrowserHelper/Driver/BrowserDriver.cs
@@ -10,19 +10,27 @@ public class BrowserDriver : IBrowserDriver
public IWebDriver GetChromeDriver(bool headless = true)
{
new DriverManager().SetUpDriver(new ChromeConfig());
+ var chromdriverservice = ChromeDriverService.CreateDefaultService();
+ chromdriverservice.HideCommandPromptWindow = true;
ChromeOptions options = new ChromeOptions();
if (headless)
+ {
options.AddArguments("--headless");
- return new ChromeDriver(options);
+ }
+ return new ChromeDriver(chromdriverservice, options);
}
public IWebDriver GetFirefoxDriver(bool headless = true)
{
new DriverManager().SetUpDriver(new FirefoxConfig());
+ var firefoxdriverservice = FirefoxDriverService.CreateDefaultService();
+ firefoxdriverservice.HideCommandPromptWindow = true;
FirefoxOptions options = new FirefoxOptions();
if (headless)
+ {
options.AddArguments("--headless");
- return new FirefoxDriver(options);
+ }
+ return new FirefoxDriver(firefoxdriverservice, options);
}
}
diff --git a/BrowserHelper/Extensions/HtmlTableExtension.cs b/BrowserHelper/Extensions/HtmlTableExtension.cs
index 2ecf248..e6989e4 100644
--- a/BrowserHelper/Extensions/HtmlTableExtension.cs
+++ b/BrowserHelper/Extensions/HtmlTableExtension.cs
@@ -1,4 +1,5 @@
-using OpenQA.Selenium;
+using DataDomain;
+using OpenQA.Selenium;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -68,9 +69,10 @@ namespace BrowserHelper.Extensions
}
colIndex++;
}
- rowIndex++;
antal--;
}
+
+ rowIndex++;
if (antal < 1) break;
}
return tableDataCollection;
@@ -129,12 +131,12 @@ namespace BrowserHelper.Extensions
}
- public static List GetCertainStocks(this IWebElement element, string[] shares, string[] shareHeaders)
+ public static List GetCertainStocks(this IWebElement element, string[] shares, string[] shareHeaders)
{
- List shareList = new List();
+ List shareList = new List();
var reducedList = ReadTablePartly(element, shares, shareHeaders);
int rNr = -1;
- Share Aktie = null;
+ DiTraderStockRow Aktie = null;
foreach (var shareRow in reducedList)
{
if (shareRow.RowNumber != rNr)
@@ -150,17 +152,17 @@ namespace BrowserHelper.Extensions
{
case "Aktie":
{
- Aktie.AktieNamn = shareRow.ColumnValue;
+ Aktie.StockName = shareRow.ColumnValue;
break;
}
case "Senast":
{
- Aktie.SenastePris = Convert.ToDecimal(shareRow.ColumnValue);
+ Aktie.LatestPrice = Convert.ToDecimal(shareRow.ColumnValue);
break;
}
case "Tid":
{
- Aktie.RegTime = TimeOnly.Parse(shareRow.ColumnValue);
+ Aktie.TimeOfDay = TimeSpan.Parse(shareRow.ColumnValue);
break;
}
}
diff --git a/StockDAL/StockDAL.csproj b/StockDAL/StockDAL.csproj
index f8fd2f1..46fc85e 100644
--- a/StockDAL/StockDAL.csproj
+++ b/StockDAL/StockDAL.csproj
@@ -14,6 +14,7 @@
+
diff --git a/StockDAL/StockMarketRepository.cs b/StockDAL/StockMarketRepository.cs
index 4d55163..5b96c10 100644
--- a/StockDAL/StockMarketRepository.cs
+++ b/StockDAL/StockMarketRepository.cs
@@ -12,6 +12,8 @@ using System.Threading.Tasks;
using System.Reflection;
using System.Diagnostics;
using StockDAL.Interface;
+using BrowserHelper.Driver;
+using BrowserHelper.Settings;
namespace StockDal
{
@@ -27,12 +29,20 @@ namespace StockDal
public IWebDriver driver;
private readonly IStockPersonConnect _stockPersonConnect;
private readonly IStockRepository _stockRepository;
+ private readonly TestSettings _testSettings;
+ private readonly IStockScrapePage _scrapePage;
- public StockMarketRepository(IStockPersonConnect stockPersonConnect, IStockRepository stockRepository )
+ public StockMarketRepository(
+ IStockPersonConnect stockPersonConnect,
+ IStockRepository stockRepository,
+ TestSettings testSettings,
+ IStockScrapePage scrapePage)
{
ViewBrowser = false;
_stockPersonConnect = stockPersonConnect;
_stockRepository = stockRepository;
+ _testSettings = testSettings;
+ _scrapePage = scrapePage;
}
private void Find_Data()
@@ -206,6 +216,31 @@ namespace StockDal
}
+ private void saveStockData(List saveRow)
+ {
+ foreach(var row in saveRow)
+ {
+ try
+ {
+ StockMarketList.Add(row.StockName, row);
+ }
+ catch (ArgumentException)
+ {
+ try
+ {
+ StockMarketList.Add(row.StockName + "-2", row);
+ }
+ catch (Exception)
+ {
+ DumpObjects.Add(row);
+ }
+
+ }
+ //break;
+ }
+ }
+
+
public void LoadStockMarketList(int persId)
{
StockMarketList = new Dictionary();
@@ -214,6 +249,38 @@ namespace StockDal
//var connStocks = _stockPersonConnect.GetAllConnectionsByPersId(persId);
var groupedStocks = _stockRepository.GetStocksGroupedPerPerson(persId);
+ var lastGroup = string.Empty;
+ var stockList = new List();
+ foreach(var groupedStock in groupedStocks)
+ {
+ if (groupedStock.StockGroup != lastGroup)
+ {
+ if(lastGroup != string.Empty)
+ {
+ _testSettings.StockWishes = stockList.ToArray();
+ stockList.Clear();
+ saveStockData( _scrapePage.GetMyStockStatus(lastGroup));
+ lastGroup = groupedStock.StockGroup;
+ }
+ else
+ {
+ lastGroup = groupedStock.StockGroup;
+ }
+
+ stockList.Add(groupedStock.StockId);
+ }
+ else
+ {
+ stockList.Add(groupedStock.StockId);
+ }
+ }
+
+ if(stockList.Count > 0)
+ {
+ _testSettings.StockWishes = stockList.ToArray();
+ stockList.Clear();
+ saveStockData(_scrapePage.GetMyStockStatus(lastGroup));
+ }
//OpenBrowser(null);
//Find_Data();
diff --git a/StockDAL/StockScrapePage.cs b/StockDAL/StockScrapePage.cs
new file mode 100644
index 0000000..c383804
--- /dev/null
+++ b/StockDAL/StockScrapePage.cs
@@ -0,0 +1,68 @@
+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(3000);
+ var stockList = tblList.GetCertainStocks(_testSettings.StockWishes, _testSettings.StocWishCols);
+ //foreach (var stock in stockList)
+ //{
+ // Console.WriteLine($"Aktie: {stock.StockName} Senastepris: {stock.LatestPrice} TidPunkt {stock.TimeOfDay}");
+ //}
+ return stockList;
+ }
+
+ 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);
+ }
+ }
+}
diff --git a/StockDal.Interface/IStockScrapePage.cs b/StockDal.Interface/IStockScrapePage.cs
new file mode 100644
index 0000000..2149b5a
--- /dev/null
+++ b/StockDal.Interface/IStockScrapePage.cs
@@ -0,0 +1,12 @@
+using DataDomain;
+
+namespace StockDAL.Interface
+{
+ public interface IStockScrapePage
+ {
+ List GetMyStockStatus(string listText);
+ void GetStocksPerList(string listText);
+ void PerformClickOnSpecialValue(string name, string operation);
+ }
+
+}
diff --git a/StockInfoCore/StockInfoDISetup.cs b/StockInfoCore/StockInfoDISetup.cs
index 93ed2d9..d2add6e 100644
--- a/StockInfoCore/StockInfoDISetup.cs
+++ b/StockInfoCore/StockInfoDISetup.cs
@@ -31,8 +31,9 @@ namespace StockInfoCore
services.AddTransient();
services.AddTransient();
services.AddTransient();
- services.AddTransient();
- services.AddTransient();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddTransient();
services.AddTransient();
services.AddTransient();