Получить содержимое iframe с помощью Javascript XPATH в Javascript executor для selenium webdriver

#javascript #xpath #selenium-webdriver #web-scraping

#javascript #xpath #selenium-webdriver #очистка веб-страниц

Вопрос:

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

 var iframe = document.evaluate('//iframe[contains(@src, "//my.leadpages.net/forms/5620062778032128/5654100301578240/5645914630782976/html/?lp-in-iframe=1")]',document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).contentDocument;alert(iframe);
  

Также, если вы можете подсказать мне, как я могу перейти к фрейму, а затем получить его содержимое через узлы.У Iframe нет идентификатора, имени и т. Д., Поэтому я использовал способ xpath.Он обнаруживает фрейм как результирующий XPathResult, но я не уверен, как перейти в него, а затем извлечь текст для различных узлов.Это должно быть на Javascript.

Ответ №1:

Было бы проще помочь вам, если бы вы предоставили некоторый html с iframes, но попробуйте следующий код. Это может быть достигнуто только с помощью JAVA, для этого вам не нужен javascript.

 driver.switchTo().frame(driver.findElement(By.xpath("frame xpath expression here")));
//do your stuff here.
//to get the content of this frame, it depends on the structure of the html
//if content is within some div then simply do this.
//this would be the css selector for some DIV where the content is inside the iframe:     
//div#divContentID
WebElement divContent=driver.findElement(By.cssSelector("div#divContentID"));
String content=divContent.getText();
//to switch out of the iframe back to the main content.
driver.switchTo().defaultContent();
  

Я надеюсь, что это поможет!!