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 System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace BrowserHelper.Extensions
|
||||
{
|
||||
@ -73,7 +75,7 @@ namespace BrowserHelper.Extensions
|
||||
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 columns = table.FindElements(By.TagName("th"));
|
||||
@ -114,6 +116,54 @@ namespace BrowserHelper.Extensions
|
||||
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)
|
||||
{
|
||||
ColumnSpecialValue? columnSpecialValue = null;
|
||||
|
||||
@ -249,7 +249,7 @@ namespace StockDal
|
||||
//GlobalStopwatch.PrintSecs("After dictionaries setup ");
|
||||
var groupedStocks = _stockRepository.GetStocksGroupedPerPerson(persId);
|
||||
//GlobalStopwatch.PrintSecs("After groupedStocks fetched ");
|
||||
|
||||
var restStocks = new List<string>();
|
||||
var lastGroup = string.Empty;
|
||||
var stockList = new List<string>();
|
||||
foreach(var groupedStock in groupedStocks)
|
||||
@ -261,8 +261,15 @@ namespace StockDal
|
||||
_testSettings.StockWishes = stockList.ToArray();
|
||||
stockList.Clear();
|
||||
//GlobalStopwatch.PrintSecs("Before GetStockStatus");
|
||||
if (lastGroup == "ZNotFound")
|
||||
saveStockData(new List<DiTraderStockRow>( _scrapePage.SearchStockAndCollect("Pfizer")));
|
||||
else
|
||||
saveStockData( _scrapePage.GetMyStockStatus(lastGroup));
|
||||
//GlobalStopwatch.PrintSecs("After GetStockStatus");
|
||||
if (_testSettings.StockWishes.Length > 0)
|
||||
{
|
||||
restStocks.AddRange(_testSettings.StockWishes);
|
||||
}
|
||||
lastGroup = groupedStock.StockGroup;
|
||||
}
|
||||
else
|
||||
@ -282,7 +289,14 @@ namespace StockDal
|
||||
{
|
||||
_testSettings.StockWishes = stockList.ToArray();
|
||||
stockList.Clear();
|
||||
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())
|
||||
|
||||
@ -32,8 +32,46 @@ namespace StockDAL
|
||||
Thread.Sleep(500);
|
||||
chooseList.SelectDropDownByText(listText);
|
||||
Thread.Sleep(800);
|
||||
var stockList = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols);
|
||||
return stockList;
|
||||
var stockListTuple = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols);
|
||||
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)
|
||||
|
||||
@ -5,6 +5,7 @@ namespace StockDAL.Interface
|
||||
public interface IStockScrapePage
|
||||
{
|
||||
List<DiTraderStockRow> GetMyStockStatus(string listText);
|
||||
List<DiTraderStockRow> SearchStockAndCollect(string stockName);
|
||||
void GetStocksPerList(string listText);
|
||||
void PerformClickOnSpecialValue(string name, string operation);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user