Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Can't find a way to output the chrome elements in c#

Trying to accomplish:
I’m trying to have the messagebox display the label element. But I’m getting the error posted. The reason for getting the label is trying to make sure the checkmark is checked correctly b/c the checkboxes results are always scattered. I’m trying to find the correct label then put a checkmark on the correct one.

Image of the element

Full XPath:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

//html/body/form/table/tbody/tr/td[2]/div[1]/table/tbody/tr[5]/td/table/tbody/tr[1]/td[1]/label]
 

XPath:

//*[@id="UserAdminForm1_chkListAccess"]/tbody/tr[1]/td[1]/label

Tried:

    IWebElement up_names = null;

    up_names = caller.driver.FindElement(By.XPath("//*[@id='UserAdminForm1_chkListAccess']/tbody/tr[1]/td[1]/label"));

    MessageBox.Show(Convert.ToString(up_names), "Name", MessageBoxButtons.OK);

Error:

[OpenQA.Selenium.NoSuchElementException
  HResult=0x80131500
  Message=no such element: Unable to locate element: {"method":"xpath","selector":"//*\[@id='UserAdminForm1_chkListAccess'\]/tbody/tr\[1\]/td\[1\]/label"}
  (Session info: chrome=96.0.4664.45)
  Source=WebDriver
  StackTrace:
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByXPath(String xpath)
   at OpenQA.Selenium.By.<>c__DisplayClass19_0.<XPath>b__0(ISearchContext context)
   at OpenQA.Selenium.By.FindElement(ISearchContext context)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)
   at Paya.Form1.button1_Click(Object sender, EventArgs e) in \\KS\Project\Form1.cs:line 109
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, WM msg, IntPtr wparam, IntPtr lparam)][1]

>Solution :

You are getting

no such element: Unable to locate element: {"method":"xpath","selector":"//*\[@id='UserAdminForm1_chkListAccess'\]/tbody/tr\[1\]/td\[1\]/label"}

exception, that could mean following :

  1. This label is under an iframe.
  2. This label is under a shadow-root.
  3. You should not be on the new tab/windows launched by selenium.
  4. Element was not rendered completely and you were trying to interact with it.

So, first you should check

//input[@id='UserAdminForm1_chkListAccess_0']//following-sibling::label[@for='UserAdminForm1_chkListAccess_0']

XPath is unique or not.

Steps to check:

Press F12 in Chrome -> go to element section -> do a CTRL + F -> then paste the xpath and see, if your desired element is getting highlighted with 1/1 matching node.

if it is unique and the above conditions are false, then you could try the below code ;

var up_names = caller.driver.FindElement(By.XPath("//input[@id='UserAdminForm1_chkListAccess_0']//following-sibling::label[@for='UserAdminForm1_chkListAccess_0']"));

And If you selenium version supports Explicit waits then

var up_names = new WebDriverWait(driver, TimeSpan.FromSeconds(3)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@id='UserAdminForm1_chkListAccess_0']//following-sibling::label[@for='UserAdminForm1_chkListAccess_0']")));
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading