Как получить атрибут с дочернего узла через Selenium и C # - PullRequest
0 голосов
/ 18 декабря 2018

Ниже упоминается узел на веб-странице, и цель состоит в том, чтобы получить данные внутри атрибута "onclick".Я знаю, что могу использовать GetAttribute("onclick") для получения данных.

Но по какой-то причине я нахожу только тд, внутри которого присутствует этот входной узел.Может кто-нибудь сказать, есть ли способ получить данные атрибута «onclick» дочернего узла «input» из родительского узла «td».

 <td align="center">
    <input type="button" class="button" value="View Pdf" onclick="showFilePreView('98374');">
    </td>

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Требуемый элемент является динамическим элементом, поэтому для получения значения атрибута onclick т.е. showFilePreView ('98374') вам нужно вызвать WebDriverWait , чтобы элемент был видимым, и вы можете использовать любое из следующих решений:

  • CssSelector:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("td[align='center']>input.button[value='View Pdf']"))).GetAttribute("onclick")
    
  • XPath:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementIsVisible(By.XPath("//td[@align='center']/input[@class='button' and @value='View Pdf']"))).GetAttribute("onclick");
    

Примечание : Здесь предполагается, что узел <td> является уникальным в пределах HTML DOM

0 голосов
/ 18 декабря 2018

Если вы используете selenium-webdriver, то сначала вы можете найти родительский элемент, а затем использовать childElement = parentElemnent.FindElement(By.) для поиска дочернего элемента.

В вашем случае вы можете попробовать следующий код:

IWebElement parentElement = YourWebDriver.FindElement(By.TagName("td"));
// those codes above assume that there is only one "td" node in your case.    

IWebElement childElement = parentElement.FindElement(By.Name("button"));
String theStringYouWant = childElement.GetAttribute("onclick");

Надеюсь, что этот код может решить ваше дело.

...