Как выполнить onclick каждой таблицы тегов (tr) с помощью Webdriver Selenium C# - PullRequest
0 голосов
/ 29 мая 2020

У меня есть таблица html с onclick на теге tr. Этот «щелчок» отправляет меня на новую веб-страницу, а затем мне нужно go вернуться на предыдущую страницу и перейти к следующему «tr click». enter image description here

До сих пор мне удавалось выполнить первый onclick, а затем, когда я go вернулся, Selenium выдает мне эту ошибку.

stale ссылка на элемент: элемент не прикреплен к странице документа

Код, который у меня есть

            IWebElement table = driver.FindElement(By.Name("pg_table"));
            IReadOnlyCollection<IWebElement> rows = table.FindElements(By.XPath(".//tr[@onclick]"));
            IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
            int rowCurrent = 0;
            foreach (IWebElement row in rows)
            {

                js.ExecuteScript($"arguments[{rowCurrent}].click();", row);
                var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
                wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("/html/body")));

                //retreive data from the new page....

                Thread.Sleep(1000);
                driver.Navigate().Back();
                ++rowCurrent;
           }

Можете ли вы мне помочь.

Заранее спасибо.

1 Ответ

0 голосов
/ 08 июня 2020

Я решаю это с помощью этого, сначала я получаю все onclick javascript в списке

List<string> linksPbds = new List<string>();

IWebElement table = driver.FindElement(By.Name("pg_table"));
IReadOnlyCollection<IWebElement> rows = table.FindElements(By.XPath(".//tr[@onclick]"));

foreach (IWebElement row in rows)
{
  linksPbds.Add(row.GetAttribute("onclick"));
}

, затем я повторяю каждый член списка и выполняю javascript

foreach (var link in links)
{
    js.ExecuteScript(link);
    var airlineCode = driver.FindElement(By.XPath("/html/body/form/table[1]/tbody/tr[2]/td[1]")).Text;
    .... other html element
}

Не знаю, лучший ли это подход, но у меня это работает.

...