Я очищаю таблицу по ссылке http://dextrader.net/# / app / электронных таблиц / 1 . В идеале, когда программа будет полностью реализована, моя программа будет делать следующее:
1.Инициально запустить скребок
Проверьте, есть ли новые строки (определяется по столбцам "цена закрытия" или "пипсы" - 0 или столбец "выигрыш" пуст. Если новые строки доступны, очистите их, либо дождитесь для вставки новой строки Когда новые строки вставляются (может быть до 4 за раз), очищайте их, но не очищайте ранее очищенные строки, которые удовлетворяют условиям на шаге 2. (это будет достигается сохраненными значениями переменных)
Моя единственная реальная проблема на данный момент заключается в том, как я могу обнаружить, если это возможно, вновь вставленную строку без выполнения временных интервалов, поскольку строки вставляются в случайные моменты времени. Мой текущий код для очистки при запуске ниже.
static void Main(string[] args)
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://dextrader.net/#/app/spreadsheet/1");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMinutes(30));
Func<IWebDriver, bool> waitForElement = new Func<IWebDriver, bool>((IWebDriver Web) =>
{
Console.WriteLine(Web.FindElements(By.XPath("//html/body/div[2]/section/div/div/div[4]/div/table/tbody/tr[1]")));
return true;
});
wait.Until(waitForElement);
var rows = driver.FindElements(By.XPath("//html/body/div[2]/section/div/div/div[4]/div/table/tbody/tr"));
int i = 0;
IList<IWebElement> rowTD;
string signal;
foreach (var row in rows)
{
List<string> currentRowValues = new List<string>();
i++;
rowTD = row.FindElements(By.TagName("td"));
if (rowTD[5].Text.Equals("0"))//Check if Close Price column is 0
{
var openTime = rowTD[0].Text;
var closeTime = rowTD[1].Text;
var asset = rowTD[2].Text;
var direction = rowTD[3].Text;
var openPrice = rowTD[4].Text;
signal = direction + " " + asset + " @ " + openPrice + Environment.NewLine + "Open time: " + openTime + Environment.NewLine + "Close time: " + closeTime;
var bot = new TelegramBotClient("xxxxxxx");
var s = bot.SendTextMessageAsync("-xxxxxx", signal);
signal = string.Empty;
}
}
}