geckodriver icon indicating copy to clipboard operation
geckodriver copied to clipboard

Can't locate element within a ShadowRoot

Open titusfortner opened this issue 3 years ago • 3 comments

System

  • Version: 0.31
  • Platform: macOS Big Sur
  • Firefox: 99.0.1 (64-bit
  • Selenium: Ruby 4.1.0

Testcase

Note: Same behavior for find_elements

https://github.com/SeleniumHQ/selenium/blob/trunk/common/src/web/webComponents.html

custom_element = driver.find_element(css: 'custom-checkbox-element')
shadow_root = custom_element.shadow_root
shadow_root.find_element(css: 'input')

Stacktrace

Selenium::WebDriver::Error::WebDriverError: unexpected response, code=405, content-type="text/plain"
HTTP method not allowed

Trace-level log

2022-04-13 11:01:53 INFO Selenium -> GET session/9c72ed62-5f04-43f5-9fe3-dd7e2e82f6ad/element/269c9476-2d0d-44d1-ae9f-8751aa0ee103/shadow
1649865713374	webdriver::server	DEBUG	-> GET /session/9c72ed62-5f04-43f5-9fe3-dd7e2e82f6ad/element/269c9476-2d0d-44d1-ae9f-8751aa0ee103/shadow 
1649865713375	Marionette	DEBUG	0 -> [0,4,"WebDriver:GetShadowRoot",{"id":"269c9476-2d0d-44d1-ae9f-8751aa0ee103"}]
1649865713377	Marionette	DEBUG	0 <- [1,4,null,{"value":{"shadow-6066-11e4-a52e-4f735466cecf":"d5922422-e71b-4196-a03e-21049e31b710"}}]
1649865713378	webdriver::server	DEBUG	<- 200 OK {"value":{"shadow-6066-11e4-a52e-4f735466cecf":"d5922422-e71b-4196-a03e-21049e31b710"}}
2022-04-13 11:01:53 INFO Selenium <- {"value":{"shadow-6066-11e4-a52e-4f735466cecf":"d5922422-e71b-4196-a03e-21049e31b710"}}
2022-04-13 11:01:53 INFO Selenium -> POST session/9c72ed62-5f04-43f5-9fe3-dd7e2e82f6ad/shadow/d5922422-e71b-4196-a03e-21049e31b710/element
2022-04-13 11:01:53 INFO Selenium    >>> http://127.0.0.1:4444/session/9c72ed62-5f04-43f5-9fe3-dd7e2e82f6ad/shadow/d5922422-e71b-4196-a03e-21049e31b710/element | {"using":"css selector","value":"input"}
2022-04-13 11:01:53 DEBUG Selenium      > {"Accept"=>"application/json", "Content-Type"=>"application/json; charset=UTF-8", "User-Agent"=>"selenium/4.1.0 (ruby macosx)", "Content-Length"=>"40"}
2022-04-13 11:01:53 INFO Selenium <- HTTP method not allowed

titusfortner avatar Apr 13 '22 16:04 titusfortner

This is not implemented yet. See https://bugzilla.mozilla.org/show_bug.cgi?id=1700097

whimboo avatar Apr 13 '22 16:04 whimboo

Is there any update on this?

antonalgeorge avatar May 24 '22 06:05 antonalgeorge

Any progress with this issue ? I cannot test app that uses shadow DOM using Selenium

tbieniek avatar Jul 29 '22 10:07 tbieniek

This is fixed in Firefox 113.

whimboo avatar May 09 '23 15:05 whimboo

*** It works with Firefox 113.0.1 (64-bit) with geckodriver-v0.33.0-linux64 *** It doesn't work with almost any other combination of Firefox/geckodriver I've tried.

I've encountered an error using Selenium with python: shadow_host = driver.find_element(By.TAG_NAME, 'some tag') shadow_host.shadow_root.find_element(By.CSS_SELECTOR, 'some css_selector') ---> "selenium.common.exceptions.WebDriverException: Message: HTTP method not allowed"

This was the case for the current Firefox version while writing this post: 118.0.2 (64-bit); and also for 113.0.1 (64-bit)

I've tried several geckodriver versions, specifically geckodriver-v0.31.0-linux64 (title of this thread) in combination with both versions. Finally, as I wrote in the beginning of the post, I was able to interact with ShadowRoot object using Firefox 113 (current version is 118*) and the latest geckodriver (0.33.0-linux64).

  • Selenium Firefox webdriver is unable to operate with geckodriver-v0.33.0-linux64 and geckodriver-v0.32.[1-3]-linux64

orensch2 avatar Nov 01 '23 14:11 orensch2

@orensch2 please make sure that the right version of geckodriver is used. You can check that by the returned session capabilities as well. If that's still happening with recent Firefox and geckodriver please file a new issue with trace logs attached. Thanks.

whimboo avatar Nov 01 '23 15:11 whimboo