Html 使用Selenium Webdriver和ruby以及<;按钮类型=";按钮“&燃气轮机;

Html 使用Selenium Webdriver和ruby以及<;按钮类型=";按钮“&燃气轮机;,html,ruby,firefox,selenium-webdriver,Html,Ruby,Firefox,Selenium Webdriver,我正在使用SeleniumWebDriver和Ruby,我需要自动化文件上传功能。 我试过了 WAIT.until{driver.find_元素(:css,'div.ui-dialog-buttonset')。显示?} 通过使用此选项,它会给出超时错误 elem = driver.find_element(:css,'div.ui-dialog-buttonset') puts "Hi" js = <<-end var buttons = document.querySe

我正在使用SeleniumWebDriver和Ruby,我需要自动化文件上传功能。 我试过了

WAIT.until{driver.find_元素(:css,'div.ui-dialog-buttonset')。显示?}

通过使用此选项,它会给出超时错误

  elem = driver.find_element(:css,'div.ui-dialog-buttonset')
  puts "Hi"
  js = <<-end
var buttons = document.querySelectorAll('button');
    buttons[0].setAttribute('aria-disabled', true);
end
  elem = driver.execute_script(js, elem)
  puts elem
  elem.send_keys("C:\\Users\\seema\\Desktop\\1413.jpg")
在IRB中,我发现了以下错误

irb(main):038:0> Wait.until { $driver.find_element(:css,'div.ui-dialog-buttonse>button')[1].displayed? }
Selenium::WebDriver::Error::TimeOutError: timed out after 80 seconds (Unable to locate element: {"method":"css selector","selector":"div.ui-dialog-buttonse>button"})}
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/common/wait.rb:57:in `until'
    from (irb):38:in `evaluate'
    from org/jruby/RubyKernel.java:1093:in `eval'
    from org/jruby/RubyKernel.java:1489:in `loop'
    from org/jruby/RubyKernel.java:1254:in `catch'
    from org/jruby/RubyKernel.java:1254:in `catch'
    from C:\jruby-1.7.4\/bin/jirb_swing:53:in `(root)'
还有第二个命令

irb(main):043:0> elem = $driver.find_element(:css,'div.ui-dialog-buttonse>button')[1]
Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"css selector","selector":"div.ui-dialog-buttonse>button"}
    from [remote server] file:///C:/Users/seema/AppData/Local/Temp/webdriver-profile20130704-2984-1wifg7r/extensions/fxdriver@googlecode.com/components/driver_component.js:8444:in `FirefoxDriver.prototype.findElementInternal_'
    from [remote server] file:///C:/Users/seema/AppData/Local/Temp/webdriver-profile20130704-2984-1wifg7r/extensions/fxdriver@googlecode.com/components/driver_component.js:8453:in `FirefoxDriver.prototype.findElement'
    from [remote server] file:///C:/Users/seema/AppData/Local/Temp/webdriver-profile20130704-2984-1wifg7r/extensions/fxdriver@googlecode.com/components/command_processor.js:10456:in `DelayedCommand.prototype.executeInternal_/h'
    from [remote server] file:///C:/Users/seema/AppData/Local/Temp/webdriver-profile20130704-2984-1wifg7r/extensions/fxdriver@googlecode.com/components/command_processor.js:10461:in `DelayedCommand.prototype.executeInternal_'
    from [remote server] file:///C:/Users/seema/AppData/Local/Temp/webdriver-profile20130704-2984-1wifg7r/extensions/fxdriver@googlecode.com/components/command_processor.js:10401:in `DelayedCommand.prototype.execute/<'
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/response.rb:51:in `assert_ok'
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/default.rb:66:in `request'
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:629:in `raw_execute'
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:607:in `execute'
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:575:in `find_element_by'
    from C:/jruby-1.7.4/lib/ruby/gems/shared/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/common/search_context.rb:42:in `find_element'
    from (irb):43:in `evaluate'
    from C:\jruby-1.7.4\/bin/jirb_swing:53:in `(root)'
irb(main):043:0>elem=$driver.find_元素(:css,'div.ui-dialog-buttonse>button')[1]
Selenium::WebDriver::Error::NoSucheleCenter:无法定位元素:{“方法”:“css选择器”,“选择器”:“div.ui-dialog-buttonse>button”}
来自[远程服务器]file:///C:/Users/seema/AppData/Local/Temp/webdriver-档案20130704-2984-1wifg7r/扩展/fxdriver@googlecode.com/components/driver_component.js:8444:in`FirefoxDriver.prototype.findElementInternal_'
来自[远程服务器]file:///C:/Users/seema/AppData/Local/Temp/webdriver-档案20130704-2984-1wifg7r/扩展/fxdriver@googlecode.com/components/driver_component.js:8453:in`FirefoxDriver.prototype.findElement'
来自[远程服务器]file:///C:/Users/seema/AppData/Local/Temp/webdriver-档案20130704-2984-1wifg7r/扩展/fxdriver@googlecode.com/components/command\u processor.js:10456:in`DelayedCommand.prototype.executeInternal\uh'
来自[远程服务器]file:///C:/Users/seema/AppData/Local/Temp/webdriver-档案20130704-2984-1wifg7r/扩展/fxdriver@googlecode.com/components/command\u processor.js:10461:in`DelayedCommand.prototype.executeInternal\'
来自[远程服务器]file:///C:/Users/seema/AppData/Local/Temp/webdriver-档案20130704-2984-1wifg7r/扩展/fxdriver@googlecode.com/components/command_processor.js:10401:in`DelayedCommand.prototype.execute/首先检查链接以避免此类超时错误

您可以尝试以下代码:

# implicit time out declarations
wait = Selenium::WebDriver::Wait.new(:timeout => 60)

# wait till the required button element being displayed
# Use the link : http://www.w3schools.com/cssref/css_selectors.asp
# for css selectors
wait.until { driver.find_element(:css,'div.ui-dialog-buttonse>button')[1].displayed? }
elem = driver.find_element(:css,'div.ui-dialog-buttonse>button')[1]
elem.sendKeys("C://path/To/File.jpg")
更新

#implicit time out declarations
wait = Selenium::WebDriver::Wait.new(:timeout => 60)

#wait till the div element is being displayed
wait.until { driver.find_element(:css,'div.ui-dialog-buttonse').displayed? }
elem = driver.find_element(:css,'div.ui-dialog-buttonse')

js = <<-end
var buttons = document.querySelectorAll('button');
    buttons[0].setAttribute('aria-disabled', true);
end

elem = driver.execute_script(js, elem) 
elem.sendKeys("C://path//To//File.jpg")
查看下面的链接和您的部分
html
,我发现
aria disabled
设置为false:


在这里给我相关的
html
代码。也许我可以帮你。也粘贴完整的错误堆栈。请粘贴部分屏幕上传,我认为这部分是不够的帮助。但是不要从帖子中删除html。如果我的建议对你有帮助或没有帮助,请告诉我,否则我想问你其他信息。投票人:可能你知道正确的答案,我很清楚,因为你将这个答案标记为错误。但我相信这应该行得通。我想看看答案是否正确。听这里所有人都在学习,所以只下一票根本不是一个好的贡献。如果你观察到任何错误,请在此处张贴答案或评论以更正。无论哪种方式,你都可以做出贡献。但只有否决票不是一个好办法。@seema这意味着我们现在能够消除超时错误。因此,您现在可以通过编辑再次放入更新的代码和错误堆栈。嗨,Priti,我尝试过使用您的代码我收到了此错误消息error-元素当前不可见,因此可能无法与\n[\”[远程服务器]交互 file:///C:/Us ers/seema/AppData/Local/Temp/webdriver-profile20130704-1412-12F链接/扩展/fxdriver@googlecode.com/components/command\u processor.js:7736:在`fxdriver.premissions.visible'\“,\@Priti中,斜杠(/)是否与这个上传命令一起工作?据我所知,有两个反斜杠(\)通常是必需的。@kedar humm.。这是从操作码复制粘贴而来的。这不是主要问题,所以我看得太多了。:)谢谢你纠正我。
# implicit time out declarations
wait = Selenium::WebDriver::Wait.new(:timeout => 60)

# wait till the required button element being displayed
# Use the link : http://www.w3schools.com/cssref/css_selectors.asp
# for css selectors
wait.until { driver.find_element(:css,'div.ui-dialog-buttonse>button')[1].displayed? }
elem = driver.find_element(:css,'div.ui-dialog-buttonse>button')[1]
elem.sendKeys("C://path/To/File.jpg")
<button class="otherButtonClass ui-state-hover ui-state-focus" type="button" role="button" aria-disabled="false">
#implicit time out declarations
wait = Selenium::WebDriver::Wait.new(:timeout => 60)

#wait till the div element is being displayed
wait.until { driver.find_element(:css,'div.ui-dialog-buttonse').displayed? }
elem = driver.find_element(:css,'div.ui-dialog-buttonse')

js = <<-end
var buttons = document.querySelectorAll('button');
    buttons[0].setAttribute('aria-disabled', true);
end

elem = driver.execute_script(js, elem) 
elem.sendKeys("C://path//To//File.jpg")