Files
StockInfoCoreApp/StockDAL/StockScrapePage.cs

121 lines
4.7 KiB
C#

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<DiTraderStockRow> GetMyStockStatus(string listText)
{
Thread.Sleep(500);
chooseList.SelectDropDownByText(listText);
Thread.Sleep(800);
var stockList = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols);
return stockList;
}
public List<DiTraderStockRow> SearchStockAndCollect(string stockName)
{
var returnValue = new List<DiTraderStockRow>();
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 List<StockGroupModel> GetGroupStocksList(string listText,int startNo=0)
{
var resList = new List<StockGroupModel>();
var nr = startNo;
Thread.Sleep(1000);
chooseList.SelectDropDownByText(listText);
Thread.Sleep(5000);
var stocklist = tblList.ReadHandledStock();
foreach (var stock in stocklist)
{
resList.Add(new StockGroupModel { Id = ++nr, StockGroup = listText, StockName = stock.ColumnValue });
//result += $"{listText}: {stock.ColumnValue} {System.Environment.NewLine}";
}
//File.WriteAllText($"Aktier_{listText}.txt", result);
return resList;
}
//public void CreateProduct()
//{
// lnkProduct.Click();
// lnkCreate.Click();
//}
public void PerformClickOnSpecialValue(string name, string operation)
{
tblList.PerformActionOnCell("1", "Aktie", name, operation);
}
}
}