Мой вопрос о xpath не работает на Selenium - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь загрузить файлы на определенную дату с веб-сайта, используя xpath Selenium, как показано ниже. Я использую его, чтобы найти ссылку, которую я хочу от формы веб-сайта.

driver.findElement(By.xpath("//tr[td[contains(.,'10/30/2018')] and @class='Row ']//span")).click();

Когда я непосредственно ищу HTML в браузере Chrome, используя xpath, он дает мне желаемый результат. Однако, если я использую Selenium 'xpath (веб-драйвер Chrome) в java-программе для определения местоположения элемента, я получаю «No Such Element Exception». Я пытался дольше ждать загрузки веб-страницы с помощью

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

Но это не сработало.

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

Я вижу, что ссылка находится в теге "iframe". Это то, с чем я должен разобраться первым?

Веб-структура в основном такова

<tr>
  <tr class="Row ">
    <td>10/30/2018 9:00:00 PM<td>
    <td>
      <span>
        <input type="submit" value="Download"></input>
        <input type="hidden"></input>
      </span>
    </td>
  </tr>
  <tr class="Row ">
    <td>10/27/2018 9:00:00 PM<td>
    <td>
      <span>
        <input type="submit" value="Download"></input>
        <input type="hidden"></input>
      </span>
    </td>
  </tr> 
</tr> 

Я тоже пробовал это и не работало.

driver.findElement(By.xpath("//tr[td[contains(.,'10/30/2018')] and @class='Row ']//input[@type='submit']")).click();

1 Ответ

0 голосов
/ 05 ноября 2018

Мой вопрос решен. Причина, по которой я не могу найти элемент, заключается в том, что он находится в теге iframe. Это означает, что это другой сайт внутри текущего сайта. Чтобы справиться с этим, мне нужно использовать функцию switchTo, чтобы сначала перейти на этот сайт, а затем я могу работать над ним.

driver.switchTo().frame(driver.findElements(By.tagName("iframe")).get(0)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...