Searching in tbody and jump over not wished stocks improved performance
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
using DataDomain;
|
||||
using Helpers;
|
||||
using OpenQA.Selenium;
|
||||
using System;
|
||||
using System.Collections;
|
||||
@ -64,7 +65,7 @@ namespace BrowserHelper.Extensions
|
||||
ColumnName = columns[colIndex].Text != "" ?
|
||||
columns[colIndex].Text : colIndex.ToString(),
|
||||
ColumnValue = colValue.Text,
|
||||
ColumnSpecialValue = GetControl(colValue)
|
||||
//ColumnSpecialValue = GetControl(colValue)
|
||||
});
|
||||
}
|
||||
colIndex++;
|
||||
@ -78,6 +79,46 @@ namespace BrowserHelper.Extensions
|
||||
return tableDataCollection;
|
||||
}
|
||||
|
||||
public static List<DiTraderStockRow> SimpleReadTablePartly(this IWebElement table, string[] shares, string[] shareHeaders)
|
||||
{
|
||||
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 (!shares.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--;
|
||||
}
|
||||
}
|
||||
if (antal < 1) break;
|
||||
}
|
||||
GlobalStopwatch.PrintSecs("After scraplooping");
|
||||
return shareCollection;
|
||||
}
|
||||
|
||||
private static ColumnSpecialValue GetControl(IWebElement columnValue)
|
||||
{
|
||||
@ -131,45 +172,45 @@ namespace BrowserHelper.Extensions
|
||||
}
|
||||
|
||||
|
||||
public static List<DiTraderStockRow> GetCertainStocks(this IWebElement element, string[] shares, string[] shareHeaders)
|
||||
{
|
||||
List<DiTraderStockRow> shareList = new List<DiTraderStockRow>();
|
||||
var reducedList = ReadTablePartly(element, shares, shareHeaders);
|
||||
int rNr = -1;
|
||||
DiTraderStockRow Aktie = null;
|
||||
foreach (var shareRow in reducedList)
|
||||
{
|
||||
if (shareRow.RowNumber != rNr)
|
||||
{
|
||||
if (Aktie != null)
|
||||
{
|
||||
shareList.Add(Aktie);
|
||||
}
|
||||
Aktie = new();
|
||||
rNr = shareRow.RowNumber;
|
||||
}
|
||||
switch (shareRow.ColumnName)
|
||||
{
|
||||
case "Aktie":
|
||||
{
|
||||
Aktie.StockName = shareRow.ColumnValue;
|
||||
break;
|
||||
}
|
||||
case "Senast":
|
||||
{
|
||||
Aktie.LatestPrice = Convert.ToDecimal(shareRow.ColumnValue);
|
||||
break;
|
||||
}
|
||||
case "Tid":
|
||||
{
|
||||
Aktie.TimeOfDay = TimeSpan.Parse(shareRow.ColumnValue);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
shareList.Add(Aktie);
|
||||
return shareList;
|
||||
}
|
||||
//public static List<DiTraderStockRow> GetCertainStocks(this IWebElement element, string[] shares, string[] shareHeaders)
|
||||
//{
|
||||
// List<DiTraderStockRow> shareList = new List<DiTraderStockRow>();
|
||||
// var reducedList = ReadTablePartly(element, shares, shareHeaders);
|
||||
// int rNr = -1;
|
||||
// DiTraderStockRow Aktie = null;
|
||||
// foreach (var shareRow in reducedList)
|
||||
// {
|
||||
// if (shareRow.RowNumber != rNr)
|
||||
// {
|
||||
// if (Aktie != null)
|
||||
// {
|
||||
// shareList.Add(Aktie);
|
||||
// }
|
||||
// Aktie = new();
|
||||
// rNr = shareRow.RowNumber;
|
||||
// }
|
||||
// switch (shareRow.ColumnName)
|
||||
// {
|
||||
// case "Aktie":
|
||||
// {
|
||||
// Aktie.StockName = shareRow.ColumnValue;
|
||||
// break;
|
||||
// }
|
||||
// case "Senast":
|
||||
// {
|
||||
// Aktie.LatestPrice = Convert.ToDecimal(shareRow.ColumnValue);
|
||||
// break;
|
||||
// }
|
||||
// case "Tid":
|
||||
// {
|
||||
// Aktie.TimeOfDay = TimeSpan.Parse(shareRow.ColumnValue);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// shareList.Add(Aktie);
|
||||
// return shareList;
|
||||
//}
|
||||
|
||||
|
||||
public static void PerformActionOnCell(this IWebElement element, string targetColumnIndex, string refColumnName, string refColumnValue, string controlToOperate = null)
|
||||
|
||||
Reference in New Issue
Block a user