Найдите элемент внутри рамки - PullRequest
0 голосов
/ 03 октября 2018

У меня есть следующий HTML-код:

<td class="gnb_menu" id="MAIN_04" name="MAIN_04" style="width:100px;text-align:center;">
  <span style="cursor:pointer;"  onclick="javascript:movePage('MAIN_04','/basis/menuServlet.do?method=getMenuUrl','body','Y')">
    <nobr>Business</nobr>
  </span>
</td>

Я пытаюсь получить XPath тега span.Я использую Selenium и попробовал это:

cd.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
var d = cd.FindElementByXPath("//td[@id='MAIN_04']/span[@style='cursor:pointer;']");
d.Click();

Но продолжайте сталкиваться с ошибкой: "OpenQA.Selenium.NoSuchElementException has been thrown", потому что он не может найти элемент / такого элемента нет.

Я пыталсямного разных XPath (//*[@id='MAIN_04']/span), (//td[@id='MAIN_04']/span) и т. д., но все еще не может понять это правильно.Я даже пытался убрать неявное ожидание, потому что думал, что это ошибка тайм-аута ... Я не знаю.

ПОЖАЛУЙСТА, ПОМОГИТЕ Я новичок в этом, и я так растерялся.Спасибо!

1 Ответ

0 голосов
/ 03 октября 2018

После двух дней изучения этой крошечной ошибки я понял это!

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

// Found the frame using its XPath (cd is my Chrome Driver)
IWebElement frame = cd.FindElement(By.XPath("/html/frameset/frame[2]"));
cd.SwitchTo().Frame(frame);
// Found the XPath of the span tag where my error was occurring 
IWebElement d = cd.FindElement(By.XPath("//td[@id='MAIN_04']/span"));
d.Click();

HTML-код был:

<frame name="menu" src="/basis/common/topMenu.jsp" scrolling="no" marginwidth="0" noresize="" marginheight="0">
...
...
  <td class="gnb_menu" id="MAIN_04" name="MAIN_04" style="width:100px;text-align:center;">
    <span style="cursor:pointer;" onclick="javascript:movePage('MAIN_04','/basis/menuServlet.do?method=getMenuUrl','body','Y')">
      <nobr>Business</nobr>
  </span>
</td>

В моем случае мне не нужно возвращаться к моему фрейму / содержимому по умолчанию, но если вы это сделаете:

cd.SwitchTo().DefaultContent();

Получил этос помощью @Andersson и iFrame Вопрос !Спасибо, ребята:)

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