Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get "invalid selector: Unable to locate an element with the xpath expression" after upgrade from 6.15.1 to 6.16 #841

Closed
saratoga8 opened this issue Dec 24, 2018 · 2 comments
Assignees

Comments

@saratoga8
Copy link

saratoga8 commented Dec 24, 2018

Meta -

Watir Version: 6.16
Selenium Version: 3.141
Browser Version: Chrome 70.0.3538.77
Browser Driver Version: chromedriver=2.45.615279
OS Version: Linux 4.15.0-42-generic x86_64

Expected Behavior -

The text fields 'USERNAME' and 'PASSWORD' should be filled by text of the site https://app.evrideo.com/login/     (see Steps to reproduce)

Actual Behavior -

/home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/response.rb:69:in assert_ok': invalid selector: Unable to locate an element with the xpath expression ()[1]//*[local-name()='input'][@id='username'] because of the following error: (Selenium::WebDriver::Error::InvalidSelectorError) SyntaxError: Failed to execute 'evaluate' on 'Document': The string '()[1]//*[local-name()='input'][@id='username']' is not a valid XPath expression. (Session info: chrome=70.0.3538.77) (Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 4.15.0-42-generic x86_64) from /home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/response.rb:32:in initialize'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:84:in new' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:84:in create_response'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/default.rb:104:in request' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:62:in call'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/bridge.rb:166:in execute' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/oss/bridge.rb:584:in execute'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/oss/bridge.rb:552:in find_element_by' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/common/search_context.rb:60:in find_element'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/locators/element/locator.rb:56:in locate_element' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/locators/element/locator.rb:34:in matching_elements'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/locators/element/locator.rb:18:in locate' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:741:in locate_in_context'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:612:in locate' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:729:in assert_exists'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:65:in exists?' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/wait.rb:216:in block in create_proc'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/wait.rb:43:in block in until' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/wait.rb:87:in block in run_with_timer'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/wait/timer.rb:19:in block in wait' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/wait/timer.rb:18:in loop'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/wait/timer.rb:18:in wait' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/wait.rb:86:in run_with_timer'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/wait.rb:42:in until' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/wait.rb:125:in wait_until'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:677:in wait_for_exists' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:701:in wait_for_enabled'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:713:in wait_for_writable' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:838:in check_condition'
from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:800:in element_call' from /home/daniel/.rvm/gems/ruby-2.5.3/gems/watir-6.16.1/lib/watir/elements/element.rb:338:in send_keys'
from support/bug.rb:9:in `

'

Steps to reproduce -

Example's code:

 require 'watir'

browser = Watir::Browser.new

browser.goto 'https://app.evrideo.com/login/'
browser.wait
root = browser.element(css: '.main-container section ichannel-login-form')

root.input(id: 'username').send_keys("usr")
root.input(id: 'password').send_keys("pwd")

browser.close
@titusfortner titusfortner self-assigned this Dec 24, 2018
@titusfortner
Copy link
Member

Classic YAGNI. I was (am?) trying to walk the line of not making the implementation "XPath specific" for the extensions which caused me to miss this scenario in 6.16. I think I have the fix, and I'll try to get a point release out quickly. Thanks for the report.

@titusfortner
Copy link
Member

Fixed in 6.16.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants