繁体   English   中英

如何从Selenium + Cucumber + Ruby中的H1标签获取文本

[英]How to get text from H1 tag in Selenium + Cucumber + Ruby

我想获得H1文字。 页面从markdown转换为HTML。 当我使用以下代码使用XPath获取文本时:

element = driver.find_element(xpath: '/html/body/div[3]/div[1]/h1')
element.text

我收到错误消息:

<driver.find_element(xpath: '/html/body/div[3]/div[1]/h1')
Selenium::WebDriver::Error::NoSuchElementError: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[3]/div[1]/h1"}
(Session info: chrome=62.0.3202.89)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.1.7601 SP1 x86_64)
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/response.rb:71:in `assert_ok'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/common.rb:83:in `new'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/default.rb:106:in `request'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/common.rb:61:in `call'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/bridge.rb:170:in `execute'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/oss/bridge.rb:581:in `execute'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/oss/bridge.rb:549:in `find_element_by'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/common/search_context.rb:62:in `find_element'
    from (irb):60
    from C:/Ruby23-x64/bin/irb.cmd:19:in `<main>'

请,有人可以更正此代码或建议另一种获取文本值的方法吗?

谢谢。

当我单击该url时,该站点会短暂显示一个“正在加载”文本,之后,您正在寻找的h1文本将变为可见。 您可以使用隐式等待来等待最长时间,然后再发生超时。

硒文档中的示例:

require 'rubygems' # not required for ruby 1.9 or if you installed without gem
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.manage.timeouts.implicit_wait = 10 # seconds

driver.get "http://somedomain/url_that_delays_loading"
element = driver.find_element(:id => "some-dynamic-element")

另外,由于仅存在一个h1元素,因此可以使用更简单的选择器,例如css选择器div h1或xpath选择器//div/h1

原始帖子

您问题中的两个xpath不同: /html/body/div[3]/footer/nav[2]/ul/li[3]/a/html/body/div[3]/div[1]/h1

可以提供HTML网站吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM