Watin - Не удается найти элемент ссылки (Javascript) - PullRequest
0 голосов
/ 17 июня 2011

Я использую watin для автоматизации процесса в веб-системе (внутренняя).

Я могу открыть веб-сайт и получить доступ к некоторым ссылкам, но другие не могут быть найдены. Я думаю, что это может быть либо потому, что они глубоко вложенные, либо потому что href это javascript. Это формат, в котором они находятся:

    <frame>
     <html>
      <frameset>
       <frame>
        <html>
         <body>
          <div>
           <table>
            <table>
             <tr>
              <td>
               <a id="1_1_1_a" href="javascript:blah" </a>

Я пробовал разные способы поиска по идентификатору, типу элемента и т. Д. Но я застрял на этом.

Может кто-нибудь помочь?

Спасибо

Ответы [ 3 ]

0 голосов
/ 05 июля 2011

Попробуйте это

        using (var browser = new IE("your_web_site_here"))
        {
            try
            {
            Frame first_frame = browser.Frame(Find.ById("frame_1_id"));
            Frame second_frame = first_frame.Frame(Find.ById("frame_2_id"));
            var first_div = second_frame.Div(Find.ById("first_div_id"));
            Assert.IsTrue(first_div.Exists);
            var Link_to_click = first_div.Link(Find.ById("1_1_1_a"));
            Assert.IsTrue(Link_to_click.Exists);
            Link_to_click.Click();
            }
            catch (Exception ex)
            {

            }
         }

Иногда Ватин не может найти элементы, которые я до сих пор пытаюсь выяснить, почему и каковы предварительные условия.

0 голосов
/ 20 сентября 2012

У меня была похожая проблема, когда мой тест просматривал страницу, на которой было 40 ссылок, и хотя вы могли видеть все ссылки на странице, следующее утверждение показало бы, что ссылки (и другие коллекции элементов) имели счетчикноль.

ie.Links.Count();

Я до сих пор не знаю точно, в чем заключается основная проблема, но я обнаружил, что если вы запустите Gallio Icarus / Gallio Echo / Visual Studio (или любой другой используемый вами тестовый прогон), то Правый клик -> Запуск от имени администратора тест работает, как и ожидалось, и элементы правильно загружаются в объект ie браузера.

0 голосов
/ 17 июня 2011

Элементы в кадре необходимо искать в его кадре, потому что каждый кадр считается отдельным пространством имен в WatIn. Поэтому сначала получите правильный фрейм (вызывая метод Frame или через свойство Frames - обратите внимание, что в вашем примере вы должны сделать это дважды, поскольку у вас есть два вложенных фрейма), а затем найдите ссылку, например ::

ie.Frames[0].Frames[0].Link("1_1_1_a")
...