0

I have a shadow root radio button:

enter image description here

<li class="radios__item selectable__item" role="radio" id="ds-radio-button-group-4-item-0" aria-checked="false" aria-disabled="false">::before "Yes"</li>
::before "No"

I tried below code:

public void SelectRadioButton(WebElement radioButton) {
    JavascriptExecutor js = (JavascriptExecutor) driver;
    WebElement radio = (WebElement) js.executeScript("return document.querySelector('#ds-radio-button-group-4-item-1').shadowRoot");
    radio.click();
}

I get below error:

org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'L211702', ip: '192.168.29.53', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_361'
Driver info: io.appium.java_client.windows.WindowsDriver
Capabilities {appTopLevelWindow: 110d90, javascriptEnabled: true, platform: WINDOWS, platformName: Windows}
Session ID: 5A73DA21-DBEA-45C9-A457-DE40C7F2E303
*** Element info: {Using=id, value=ds-radio-button-group-4-item-1}
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41)
    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
    at io.appium.java_client.windows.WindowsDriver.execute(WindowsDriver.java:1)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
    at io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:61)
    at io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1)
    at io.appium.java_client.windows.WindowsDriver.findElement(WindowsDriver.java:1)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:372)
    at io.appium.java_client.DefaultGenericMobileDriver.findElementById(DefaultGenericMobileDriver.java:69)
    at io.appium.java_client.AppiumDriver.findElementById(AppiumDriver.java:1)
    at io.appium.java_client.windows.WindowsDriver.findElementById(WindowsDriver.java:1)
    at org.openqa.selenium.By$ById.findElement(By.java:188)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:315)
    at io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:57)
    at io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1)
    at io.appium.java_client.windows.WindowsDriver.findElement(WindowsDriver.java:1)
    at testautomation.windowsframework.BaseInteractions.SelectRadioButton(BaseInteractions.java:43)

But it doesn't work. What am I doing wrong?

JeffC
  • 22,180
  • 5
  • 32
  • 55
SKN
  • 520
  • 1
  • 5
  • 20
  • Does this answer your question? [java.lang.NullPointerException error when trying to locate a shadow element with Selenium](https://stackoverflow.com/questions/75931152/java-lang-nullpointerexception-error-when-trying-to-locate-a-shadow-element-with) – JeffC Apr 19 '23 at 19:06
  • Nope, it didn't work – SKN Apr 20 '23 at 16:18
  • Are you using the newest Selenium? What version are you using? That link shows the current method to access shadow roots. If it's not working, you need to provide more details. At a minimum, edit your question and add the full error message as text, properly formatted. – JeffC Apr 20 '23 at 17:10
  • I'm using Selenium 3.141.59. I don't have option to use latest Selenium. The reason being I use Serenity BDD framework 2.2.7 – SKN Apr 20 '23 at 17:39
  • Updated your Serenity... the current version is 3.6.7 and it contains Selenium 4+ – JeffC Apr 20 '23 at 17:53
  • Updating serenity is not an option for me, as I work for a highly regulated domain and my org hasn't approved recent version of Serenity – SKN Apr 20 '23 at 18:17

0 Answers0