Найти элемент в селене - PullRequest
       1

Найти элемент в селене

0 голосов
/ 24 сентября 2019

Я использую Selenium с C # для запуска некоторых тестов.У меня есть проблема с элементом, который я не могу найти.Я знаю, что это там, и у меня есть это в HTML.даже зная все об этом, я не могу найти это.Когда я использовал nodeJS, его было довольно легко найти, но в C # я просто не могу.Попробовав так много вещей, я решил спросить здесь.

Я получаю исключение OpenQA.Selenium.NoSuchElementException при использовании следующего:

IWebElement Title = driver.FindElement(By.XPath("//*[contains(., 'TextHere')]"));

Я пытался использоватьcss path, xpath и tag, но единственный случай, когда я нашел что-то, был с тегом.И это был не тот элемент.

Что-то не так с моим синтаксисом?Я посмотрел на несколько потоков по этому поводу, и весь синтаксис, который они использовали, тоже не работал.

Ответы [ 3 ]

0 голосов
/ 24 сентября 2019

скажем или между двумя вызовами содержащейся функции

//*[contains(text(), 'About us') or contains(text(), 'about us')]

или используйте функцию перевода, чтобы сделать xpath нечувствительным к регистру

//*[contains(translate(text(), 'ABOUTS', 'abouts'), 'about us')]

, когда вы используете контейнерный текст, убедитесь, что содержащийся текстуникальный, иначе вы получите список результатов, и в зависимости от вашего условия повторите его.

0 голосов
/ 25 сентября 2019

Хорошо, так что я понял это.Элемент был внутри iframe.Но не только это, оно также было создано функцией, которая работала под нагрузкой.Это означает, что мне пришлось отложить задержку, чтобы дождаться загрузки.Вот рабочий код на случай, если кто-нибудь обратится к подобной проблеме:

        driver.SwitchTo().Frame(driver.FindElement(By.Id("iFrame id")));  
        System.Threading.Thread.Sleep(500); 
        IWebElement Title = driver.FindElement(By.XPath("path to element"));

Простое использование sleep может быть неоптимальным, но я новичок в этом, и это работает.Если у кого-то есть хорошая замена, я хотел бы услышать предложения.

0 голосов
/ 24 сентября 2019

Возможно, ваш Xpath неверен.Можете ли вы поделиться HTML?

Попробуйте следующий XPath:

IWebElement Title = driver.FindElement(By.XPath("//*[contains(text(), 'TextHere')]"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...