搜尋 Mozilla 技術支援網站

防止技術支援詐騙。我們絕對不會要求您撥打電話或發送簡訊,或是提供個人資訊。請用「回報濫用」功能回報可疑的行為。

了解更多

Is it possible to emulate the Firefox-console cd function and/or javascript-context-switching in selenium-webriver?

  • 1 回覆
  • 1 有這個問題
  • 11 次檢視
  • 最近回覆由 grobber

more options

The Firefox Web Console currently (version 80.0.1 as I type this) supports Javascript-context-switching to an iframe through a cd function (albeit set to be removed), as in

var ifr = document.getElementById('frame_id'); cd(ifr);

The same goal can be accomplished

  • by selecting a different Javascript context from a drop-down menu in the upper-right corner of the Web Console, as mentioned in that bug;
  • similarly in Chrome DevTools (see also an older SO exchange on this).

Question:

Is it possible to achieve the same effect while driving Firefox headless with selenium-webdriver?

Background:

I have a page loading a cross-origin iframe I have no control over, and would like to access DOM elements under that iframe. I can do this in the Web Console, but I have been unsuccessful in doing so via Selenium (specifically, node + the selenium-webdriver package):

Selecting the relevant iframe and then switching to it with

ifr = driver.findElement(By.id('frame_id')); driver.switchTo().frame(ifr);

gives me access to a different DOM than what I see in the Web Console: in Selenium I do not have access to the buttons, forms, etc. available in the browser when I interact with the latter directly.

The Firefox [https://developer.mozilla.org/en-US/docs/Tools/Web_Console Web Console] currently (version 80.0.1 as I type this) supports Javascript-context-switching to an iframe through a cd function (albeit [https://bugzilla.mozilla.org/show_bug.cgi?id=1605327 set] to be removed), as in var ifr = document.getElementById('frame_id'); cd(ifr); The same goal can be accomplished * by selecting a different Javascript context from a drop-down menu in the upper-right corner of the Web Console, as mentioned in that bug; * similarly in [https://developers.google.com/web/tools/chrome-devtools/console/reference#context Chrome DevTools] (see also an [https://stackoverflow.com/a/8581276/11064961 older SO exchange] on this). '''Question:''' Is it possible to achieve the same effect while driving Firefox headless with [https://www.npmjs.com/package/selenium-webdriver selenium-webdriver]? '''Background:''' I have a page loading a cross-origin iframe I have no control over, and would like to access DOM elements under that iframe. I can do this in the Web Console, but I have been unsuccessful in doing so via Selenium (specifically, node + the selenium-webdriver package): Selecting the relevant iframe and then switching to it with ifr = driver.findElement(By.id('frame_id')); driver.switchTo().frame(ifr); gives me access to a different DOM than what I see in the Web Console: in Selenium I do not have access to the buttons, forms, etc. available in the browser when I interact with the latter directly.

被選擇的解決方法

The answer is 'yes'. A link to the relevant Stack Overflow discussion:

https://stackoverflow.com/a/63715117/11064961

從原來的回覆中察看解決方案 👍 0

所有回覆 (1)

more options

選擇的解決方法

The answer is 'yes'. A link to the relevant Stack Overflow discussion:

https://stackoverflow.com/a/63715117/11064961