121 lines
4.7 KiB
C#
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(500);
|
|
chooseList.SelectDropDownByText(listText);
|
|
Thread.Sleep(3000);
|
|
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);
|
|
}
|
|
}
|
|
}
|