2

I have a xpath selector xpath=//input[@id=image], I want to click on this element using the keyword Execute Javascript ,please help me right the statement

I tired the statement

${Element} = Get WebElement xpath=//input[@id=image]
Execute JavaScript  arguments[0].click(),${Element}

It throws an syntax error.

Dani
  • 183
  • 5
  • 6
  • 21
  • What is the reason you want to do this with Javascript when there are specific SeleniumLibrary keywords for this behaviour? – A. Kootstra Jan 10 '18 at 08:09
  • Because when i use Click element keyword , i get the error WebDriverException: Message: unknown error: Element ...
    is not clickable at point (1165, 410). Other element would receive the click: . so when google i see that it would work if i try it with javascript
    – Dani Jan 10 '18 at 08:14
  • This sounds to me like the real problem you need to solve. There is an overlay on your element, or the ID is not as unique as you think. – A. Kootstra Jan 10 '18 at 08:33

3 Answers3

4

Following this link Is there a way to get element by XPath using JavaScript in Selenium WebDriver? I have created a keyword for clicking hidden elements. It also works for visible elements.

JS Click Element
[Documentation]
...     Can be used to click hidden elements
...     Dependencies
...         SeleniumLibrary
...         String
[Arguments]     ${element_xpath}
# escape " characters of xpath
${element_xpath}=       Replace String      ${element_xpath}        \"  \\\"
Execute JavaScript  document.evaluate("${element_xpath}", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).click();
truin
  • 41
  • 4
4

Use below code to click using javascript with XPath in robot framework

${ele}    Get WebElement    //*[text()='Logout']
Execute Javascript    arguments[0].click();     ARGUMENTS    ${ele} 
  • 1
    THANKS!!! tried for hours on this page... https://obstaclecourse.tricentis.com/Obstacles/41040 only thing works was your solution! – LTL Sep 29 '21 at 14:41
1

Instead of finding element and then passing to JS, you can directly find element by ID and click it using JS.

Execute JavaScript    document.getElementById("element-id").onclick()
Dinesh Pundkar
  • 4,160
  • 1
  • 23
  • 37
  • Please could you do it with xpath, it could be really helpful, as we use xpath throughout our project – Dani Jan 10 '18 at 07:16
  • There is not direct function available in JS like getElementByXpath. Please check this lnik - https://stackoverflow.com/questions/10596417/is-there-a-way-to-get-element-by-xpath-using-javascript-in-selenium-webdriver – Dinesh Pundkar Jan 10 '18 at 07:23