IWebElement x = Browser.FindElement(By.XPath("//span[@class='tdn link nshd bl cntr m5 small']")).GetAttribute("value"); for (int ppp = 0; ppp < x; ppp++) { pa = Browser.FindElement(By.LinkText("Собрать выручку!")); pa.Click(); }
Отправлено 09 августа 2018 - 19:05
IWebElement x = Browser.FindElement(By.XPath("//span[@class='tdn link nshd bl cntr m5 small']")).GetAttribute("value"); for (int ppp = 0; ppp < x; ppp++) { pa = Browser.FindElement(By.LinkText("Собрать выручку!")); pa.Click(); }
Отправлено 10 августа 2018 - 04:53
GetAttribute(string attr) - возвращает не элемент, а стринг.
Только ваш цикл всё равно не будет работать в таком виде, потому что в нём вы будете всегда находить один и тот же элемент.
var x = Browser.FindElement(By.XPath("//span[@class='tdn link nshd bl cntr m5 small']")).GetAttribute("value"); int.TryParse(x, out var intX); if (intX == 0) throw new Exception($"Алярм!!! Спан не распарсился! Парсили значение \"{x}\""); for (var ppp = 0; ppp < intX; ppp++) { pa = Browser.FindElement(By.LinkText("Собрать выручку!")); // эта строка будет каждый раз находить один и тот же элемент pa.Click(); }
Проще сделать так, без лишних велосипедов. При необходимости допилить локатор.
var elements = Browser.FindElements(By.LinkText("Собрать выручку!")).ToList(); elements.ForEach(w => w.Click());
Отправлено 12 августа 2018 - 20:49
GetAttribute(string attr) - возвращает не элемент, а стринг.
Только ваш цикл всё равно не будет работать в таком виде, потому что в нём вы будете всегда находить один и тот же элемент.
var x = Browser.FindElement(By.XPath("//span[@class='tdn link nshd bl cntr m5 small']")).GetAttribute("value"); int.TryParse(x, out var intX); if (intX == 0) throw new Exception($"Алярм!!! Спан не распарсился! Парсили значение \"{x}\""); for (var ppp = 0; ppp < intX; ppp++) { pa = Browser.FindElement(By.LinkText("Собрать выручку!")); // эта строка будет каждый раз находить один и тот же элемент pa.Click(); }
pa = Browser.FindElement(By.LinkText("Собрать выручку!")); // эта строка будет каждый раз находить один и тот же элемент
сюда программа не доходит. Все равно в переменную х не пишется спан
Отправлено 13 августа 2018 - 05:36
pa = Browser.FindElement(By.LinkText("Собрать выручку!")); // эта строка будет каждый раз находить один и тот же элемент
сюда программа не доходит. Все равно в переменную х не пишется спан
Что значит программа не доходит? Логи, ошибки?
Гадать на кофейной гуще не хочется.
И я не понял, вы хотите в переменную спан записать, или его значение?
Отправлено 14 августа 2018 - 20:58
pa = Browser.FindElement(By.LinkText("Собрать выручку!")); // эта строка будет каждый раз находить один и тот же элемент
сюда программа не доходит. Все равно в переменную х не пишется спан
Что значит программа не доходит? Логи, ошибки?
Гадать на кофейной гуще не хочется.
И я не понял, вы хотите в переменную спан записать, или его значение?
Выводит сообщение что спан не распарсен. хpath указан верно
Отправлено 15 августа 2018 - 04:54
Значит у вас там не инт в атрибуте "value"
Отправлено 21 августа 2018 - 21:42
Значит у вас там не инт в атрибуте "value"
спасибо, разобрался
var elements = Browser.FindElements(By.LinkText("Собрать выручку!")).ToList(); elements.ForEach(w => w.Click());
не подскажите что в этот код нужно вставить?Такая задержка не помогает: Thread.Sleep(2000);(элементы не успевают загрузиться на страницу)
Отправлено 22 августа 2018 - 05:23
var wait = new WebDriverWait(Browser, TimeSpan.FromSeconds(60)); // время условное var elements = Browser.FindElements(By.LinkText("Собрать выручку!")).ToList(); elements.ForEach(ele => { wait.Until(ExpectedConditions.ElementToBeClickable(ele)); ele.Click(); });
Либо можно подождать, пока они изначально все станут доступны для клика, а потом кликать.
0 пользователей, 0 гостей, 0 анонимных