Now even Pfizer. Inc. can be managed
This commit is contained in:
@ -1,6 +1,8 @@
|
|||||||
using DataDomain;
|
using BrowserHelper.Settings;
|
||||||
|
using DataDomain;
|
||||||
using OpenQA.Selenium;
|
using OpenQA.Selenium;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace BrowserHelper.Extensions
|
namespace BrowserHelper.Extensions
|
||||||
{
|
{
|
||||||
@ -73,7 +75,7 @@ namespace BrowserHelper.Extensions
|
|||||||
return tableDataCollection;
|
return tableDataCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<DiTraderStockRow> SimpleReadTablePartly(this IWebElement table, string[] shares, string[] shareHeaders)
|
public static List<DiTraderStockRow> SimpleReadTablePartlyOld(this IWebElement table, string[] shares, string[] shareHeaders)
|
||||||
{
|
{
|
||||||
var shareCollection = new List<DiTraderStockRow>();
|
var shareCollection = new List<DiTraderStockRow>();
|
||||||
var columns = table.FindElements(By.TagName("th"));
|
var columns = table.FindElements(By.TagName("th"));
|
||||||
@ -114,6 +116,54 @@ namespace BrowserHelper.Extensions
|
|||||||
return shareCollection;
|
return shareCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static List<DiTraderStockRow> SimpleReadTablePartly(this IWebElement table, string[] shares, string[] shareHeaders)
|
||||||
|
{
|
||||||
|
var shareSet = new HashSet<string>(shares);
|
||||||
|
|
||||||
|
var shareCollection = new List<DiTraderStockRow>();
|
||||||
|
var columns = table.FindElements(By.TagName("th"));
|
||||||
|
IWebElement tblBody = table.FindElement(By.XPath(".//tbody"));
|
||||||
|
var rows = tblBody.FindElements(By.TagName("tr"));
|
||||||
|
Dictionary<string, int> columnPos = new Dictionary<string, int>();
|
||||||
|
//GlobalStopwatch.PrintSecs("After allocations");
|
||||||
|
for (int i = 0; i < columns.Count; i++)
|
||||||
|
{
|
||||||
|
if (shareHeaders.Contains(columns[i].Text)) columnPos.Add(columns[i].Text, i);
|
||||||
|
}
|
||||||
|
//var antal = shares.Length;
|
||||||
|
int rowIndex = 0;
|
||||||
|
//GlobalStopwatch.PrintSecs("Before scraplooping");
|
||||||
|
foreach (var row in rows)
|
||||||
|
{
|
||||||
|
var element = row.FindElement(By.XPath(".//td"));
|
||||||
|
if (!shareSet.Contains(element.Text)) { }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var colDatas = row.FindElements(By.TagName("td"));
|
||||||
|
if (colDatas.Count != 0 && shares.Contains(colDatas[0].Text))
|
||||||
|
{
|
||||||
|
shareCollection.Add(new DiTraderStockRow
|
||||||
|
{
|
||||||
|
StockName = colDatas[columnPos["Aktie"]].Text,
|
||||||
|
LatestPrice = decimal.Parse(colDatas[columnPos["Senast"]].Text),
|
||||||
|
TimeOfDay = TimeSpan.Parse(colDatas[columnPos["Tid"]].Text)
|
||||||
|
});
|
||||||
|
|
||||||
|
rowIndex++;
|
||||||
|
//antal--;
|
||||||
|
shareSet.Remove(element.Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//if (antal < 1) break;
|
||||||
|
if (shareSet.Count < 1) break;
|
||||||
|
}
|
||||||
|
//GlobalStopwatch.PrintSecs("After scraplooping");
|
||||||
|
return shareCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static ColumnSpecialValue GetControl(IWebElement columnValue)
|
private static ColumnSpecialValue GetControl(IWebElement columnValue)
|
||||||
{
|
{
|
||||||
ColumnSpecialValue? columnSpecialValue = null;
|
ColumnSpecialValue? columnSpecialValue = null;
|
||||||
|
|||||||
@ -249,7 +249,7 @@ namespace StockDal
|
|||||||
//GlobalStopwatch.PrintSecs("After dictionaries setup ");
|
//GlobalStopwatch.PrintSecs("After dictionaries setup ");
|
||||||
var groupedStocks = _stockRepository.GetStocksGroupedPerPerson(persId);
|
var groupedStocks = _stockRepository.GetStocksGroupedPerPerson(persId);
|
||||||
//GlobalStopwatch.PrintSecs("After groupedStocks fetched ");
|
//GlobalStopwatch.PrintSecs("After groupedStocks fetched ");
|
||||||
|
var restStocks = new List<string>();
|
||||||
var lastGroup = string.Empty;
|
var lastGroup = string.Empty;
|
||||||
var stockList = new List<string>();
|
var stockList = new List<string>();
|
||||||
foreach(var groupedStock in groupedStocks)
|
foreach(var groupedStock in groupedStocks)
|
||||||
@ -261,8 +261,15 @@ namespace StockDal
|
|||||||
_testSettings.StockWishes = stockList.ToArray();
|
_testSettings.StockWishes = stockList.ToArray();
|
||||||
stockList.Clear();
|
stockList.Clear();
|
||||||
//GlobalStopwatch.PrintSecs("Before GetStockStatus");
|
//GlobalStopwatch.PrintSecs("Before GetStockStatus");
|
||||||
saveStockData( _scrapePage.GetMyStockStatus(lastGroup));
|
if (lastGroup == "ZNotFound")
|
||||||
|
saveStockData(new List<DiTraderStockRow>( _scrapePage.SearchStockAndCollect("Pfizer")));
|
||||||
|
else
|
||||||
|
saveStockData( _scrapePage.GetMyStockStatus(lastGroup));
|
||||||
//GlobalStopwatch.PrintSecs("After GetStockStatus");
|
//GlobalStopwatch.PrintSecs("After GetStockStatus");
|
||||||
|
if (_testSettings.StockWishes.Length > 0)
|
||||||
|
{
|
||||||
|
restStocks.AddRange(_testSettings.StockWishes);
|
||||||
|
}
|
||||||
lastGroup = groupedStock.StockGroup;
|
lastGroup = groupedStock.StockGroup;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -282,7 +289,14 @@ namespace StockDal
|
|||||||
{
|
{
|
||||||
_testSettings.StockWishes = stockList.ToArray();
|
_testSettings.StockWishes = stockList.ToArray();
|
||||||
stockList.Clear();
|
stockList.Clear();
|
||||||
saveStockData(_scrapePage.GetMyStockStatus(lastGroup));
|
if (lastGroup == "ZNotFound")
|
||||||
|
saveStockData(new List<DiTraderStockRow>(_scrapePage.SearchStockAndCollect("Pfizer")));
|
||||||
|
else
|
||||||
|
saveStockData(_scrapePage.GetMyStockStatus(lastGroup));
|
||||||
|
if (_testSettings.StockWishes.Length > 0)
|
||||||
|
{
|
||||||
|
restStocks.AddRange(_testSettings.StockWishes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DumpObjects.Any())
|
if (DumpObjects.Any())
|
||||||
|
|||||||
@ -32,8 +32,46 @@ namespace StockDAL
|
|||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
chooseList.SelectDropDownByText(listText);
|
chooseList.SelectDropDownByText(listText);
|
||||||
Thread.Sleep(800);
|
Thread.Sleep(800);
|
||||||
var stockList = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols);
|
var stockListTuple = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols);
|
||||||
return stockList;
|
return stockListTuple;
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
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)
|
public void GetStocksPerList(string listText)
|
||||||
|
|||||||
@ -5,6 +5,7 @@ namespace StockDAL.Interface
|
|||||||
public interface IStockScrapePage
|
public interface IStockScrapePage
|
||||||
{
|
{
|
||||||
List<DiTraderStockRow> GetMyStockStatus(string listText);
|
List<DiTraderStockRow> GetMyStockStatus(string listText);
|
||||||
|
List<DiTraderStockRow> SearchStockAndCollect(string stockName);
|
||||||
void GetStocksPerList(string listText);
|
void GetStocksPerList(string listText);
|
||||||
void PerformClickOnSpecialValue(string name, string operation);
|
void PerformClickOnSpecialValue(string name, string operation);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user