ruby - Capybara:如何更改窗口大小?
问题描述
似乎很难实现一些简单的事情,比如更改运行 Capybara + webdriver 的浏览器窗口
我正在针对外部网站进行测试。我想要的是最大化我的浏览器窗口。我在网上找到了很多提示,但似乎没有任何效果。重现的最少代码是:
require 'capybara'
require 'selenium-webdriver'
session = Capybara::Session.new(:selenium)
window = Capybara.current_session.current_window
window.resize_to(1920,1080)
sleep(10)
结果是
Traceback (most recent call last):
5: from C:/src/Ruby/Capybara/minimal.rb:5:in `<main>'
4: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/capybara-3.9.0/lib/capybara/session.rb:426:in `current_window'
3: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/capybara-3.9.0/lib/capybara/session.rb:102:in `driver'
2: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/capybara-3.9.0/lib/capybara.rb:519:in `block in <top (required)>'
1: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/capybara-3.9.0/lib/capybara.rb:519:in `new'
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/capybara-3.9.0/lib/capybara/rack_test/driver.rb:18:in `initialize': rack-test requires a rack application, but none was given (ArgumentError)
有任何想法吗?
解决方案
您正在创建一个会话,但随后在另一个会话的窗口上调用 resize。另一个会话是使用默认驱动程序(机架测试)自动生成的会话,它根本不支持 Windows。如果您想使用手动创建的会话来执行此操作,那就是
session = Capybara::Session.new(:selenium)
session.current_window.resize_to(1920,1080)
推荐阅读
- c - 无法编译 Y86 模拟器 (CSAPP)
- rstudio - 改变 Rstudio 的外观
- bash - 将双循环并行化为数组作业(Matlab + bash)
- python - 如何使python文件在windows上可执行?
- sql - Access/SQL:如何检查表中所有重复项(同一日期)的值是否为 0,除了一个?
- javascript - 如何在 MongoDB/Mongoose 文档数组中找到重复次数最多的值?
- android - FLAG_WINDOW_IS_OBSCURED 不适用于较新的 android
- reactjs - 尝试在 React JS 获取 JSX 表达式的函数中添加循环必须有一个父元素
- javascript - 类型 'Query' 不可分配给类型 '[(options?: QueryLazyOptions
在 codegen 的帮助下,我生成了自定义的 graphql 钩子和类型。
query loadUsers($where: UserFilter) { users(where: $where) { nodes { id email f
- azure - 如何为用户关闭 Azure 服务通知?