public IWebElement FindOneElement(By mechanism, string locator) { ElementWrapper rawElement = new ElementWrapper(); int result; ElementWrapper parent = new ElementWrapper(); try { switch (mechanism) { case By.Id: result = wdFindElementById(handle, parent, locator, ref rawElement); break; case By.LinkText: result = wdFindElementByLinkText(handle, parent, locator, ref rawElement); break; case By.Name: result = wdFindElementByName(handle, parent, locator, ref rawElement); break; default: throw new ArgumentException("Unrecognised element location mechanism: " + mechanism); } if (result != 0) { throw new Exception("Cannot locate element"); } return new InternetExplorerWebElement(this, rawElement); } catch (SEHException) { // Unable to find the element return null; } }
private static extern int wdFindElementByName(SafeHandle driver, ElementWrapper element, [MarshalAs(UnmanagedType.LPWStr)] String id, ref ElementWrapper result);
private static extern int wdeToggle(ElementWrapper handle, ref int toggled);
public InternetExplorerWebElement(InternetExplorerDriver driver, ElementWrapper wrapper) { this.driver = driver; this.wrapper = wrapper; }
private static extern int wdeSetSelected(ElementWrapper handle);
private static extern int wdeSubmit(ElementWrapper wrapper);
private static extern int wdeIsSelected(ElementWrapper handle, ref int selected);
private static extern int wdeSendKeys(ElementWrapper wrapper, [MarshalAs(UnmanagedType.LPWStr)] string text);
private static extern int wdeIsDisplayed(ElementWrapper handle, ref int displayed);
private static extern int wdeGetText(ElementWrapper wrapper, ref StringWrapperHandle result);
private static extern int wdeGetDetailsOnceScrolledOnToScreen(ElementWrapper wrapper, ref IntPtr hwnd, ref int x, ref int y, ref int width, ref int height);
private static extern int wdeGetAttribute(ElementWrapper wrapper, [MarshalAs(UnmanagedType.LPWStr)] string attributeName, ref StringWrapperHandle result);
private static extern int wdeClear(ElementWrapper handle);