如何在 selenium-webdriver 中获取窗口标题、id 和名称?

2023-11-22

我正在尝试实施以下方法硒网络驱动程序 (ruby)

  • 获取所有窗口 ID
  • 获取所有窗口标题
  • 获取所有窗口名称
  1. 我运行 Selenium IDE 并将脚本导出到 Ruby Test::Unit。将其另存为 .rb
  2. 使用 Aptana Studio 3 打开我的脚本进行编辑
  3. 初始代码片段如下:
require "rubygems"
require "selenium-webdriver"
require "test/unit"

class SwitchToPopup3 < Test::Unit::TestCase

  def setup
    @driver = Selenium::WebDriver.for :firefox
    @base_url = (URL of my test website)
    @driver.manage.timeouts.implicit_wait = 30
    @verification_errors = []
  end

  def teardown
    @driver.quit
    assert_equal [], @verification_errors
  end


def test_switch_to_popup3
  .
  .
  puts @driver.get_all_window_ids()
  puts @driver.get_all_window_titles()
  puts @driver.get_all_window_names()
  .
  .
end

我不断收到的错误是

NoMethodError: undefined method `get_all_window_ids' for #    <Selenium::WebDriver::Driver:0x101e4b040 browser=:chrome>
/Users/rsucgang/Documents/Aptana Studio 3 Workspace/Testing/SwitchToPopup2.rb:37:in `test_switch_to_popup3'

我研究了 selenium-webdriver 的 ruby​​ 绑定的文档

http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/Client/GenerateDriver.html#get_all_window_titles-instance_method

最终我的目标是运行我的自动化脚本:

  1. 单击打开一个新窗口的链接,其中 target=_blank 并且没有可用的 windowID(未实现 JS)
  2. 识别浏览器中所有打开的窗口的名称
  3. 使用 switchToWindow(name) 方法切换到新的弹出窗口
  4. 继续在弹出窗口上运行我的脚本

贾斯汀,你的方法很好。但是假设窗口句柄将以正确的顺序返回存在一个问题。所有浏览器的情况并非总是如此。我在免费的每周 Selenium 技巧时事通讯 (elemental-selenium.com) 中概述了一种略有不同的方法。

事情是这样的:

@driver.get 'http://the-internet.herokuapp.com/windows'
main_window = @driver.window_handle
@driver.find_element(css: '.example a').click
windows = @driver.window_handles
  windows.each do |window|
    if main_window != window
      @new_window = window
    end
  end
@driver.switch_to.window(main_window)  
@driver.title.should_not =~ /New Window/  
@driver.switch_to.window(@new_window)  
@driver.title.should =~ /New Window/  

您可以看到完整的提示here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 selenium-webdriver 中获取窗口标题、id 和名称? 的相关文章

随机推荐

  • 找出真实的文件类型

    我正在开发一个处理文件上传的 ASP 网页 仅允许上传某些类型的文件 例如 XLS XML CSV TXT PDF PPT 等 我必须确定文件是否确实具有与扩展名显示的类型相同的类型 换句话说 如果一个木马程序被重命名为无害 pdf并上传后
  • 将参数传递给 threading.Thread

    我在 Windows 上使用 Python 3 我在用threading Thread动态运行一个函数 我可以带或不带参数调用它 我正在设置一个事物列表 其中第一项是定义路径的字符串 其他参数将在列表中稍后列出 所以 args 可能等于 C
  • SQL Server - 如何查找我的表上的依赖表?

    Using SQLServer 我有一张桌子user id name email 还有一些其他的表 大约200多个表 其中一些使用user id作为外键cascade delete 所以 我想找出 哪些表使用这个外键 user id 我正在
  • 有没有办法减慢网络爬虫的速度,以便它能够获取代码?

    我写了一个宏去WU获取历史数据 大部分情况下 它是有效的 但是 我认为宏运行速度太快 无法从网站获取数据 https www wunderground com history daily us tx el paso KELP date 20
  • 谷歌翻译获取当前语言

    在网上找到任何可以帮助我的东西之后 我正在使用多语言网站的当前功能 function googleTranslateElementInit new google translate TranslateElement pageLanguage
  • 当另一个单元格更改时,在单元格中输入当前日期

    我有一个 Google 电子表格 用于跟踪客户端请求的应用程序配置信息的状态 例如 文本转到按钮上 我的顶部有一个 状态 列 下面的行中有一个 范围列表 数据验证单元格 使用的范围有 与客户 与我 已完成 我的右侧还有一列 用于手动添加上次
  • 如何将 PySpark 数据帧的每个非字符串列与浮点常量相除或相乘?

    我的输入数据框如下所示 from pyspark sql import SparkSession spark SparkSession builder appName Basics getOrCreate df spark createDa
  • Jhipster + REST 客户端 + 身份验证

    我需要了解如何验证 REST 客户端 可能是 Paw 可能是 Android 应用程序 使用 AFNetworking 和 jHipster 的 iOs 应用程序 我认为 更一般地说 使用 spring boot 我不是这方面的专家 虽然我
  • 使用 useEffect 更新 useReducer 'state'

    在我的应用程序中 我使用 React Hooks Context API 现在 每当我的 Provider 组件安装时 我都需要将从 localStorage 获取的数据分配给initialState carts state carts 如
  • 我可以将任意函数传递给 Scala 中的另一个函数吗?

    我是 Scala 的新手 能够将函数传递给其他函数非常巧妙 但是我可以传递一个随意的函数引用另一个函数 所述函数参数的数量将是固定的 也就是说 我也很好奇是否也可以传递具有任意数量的函数 我总是被类型错误绊倒 我尝试过使用Any但这似乎没有
  • 如何使用 iPhone 的 json 解析对象数组

    我在解析 JSON 结果中的对象数组时遇到问题 first name vijay last name last creditCardNumber 178978977779787979 month 02 year 2012 address A
  • 打开远程文档并保存回远程服务器

    我为我的办公室编写了一个在服务器上运行的网络应用程序 我们所有的文档也都在服务器上 我希望能够让用户通过我的网络应用程序浏览服务器上的文件夹 在编辑器 在线或桌面 中打开它 能够编辑它并将其保存回服务器的位置被打开 我一直在研究 Googl
  • Java:确定当前 Windows 用户的编程方式

    我看到很多类似的问题 但是我想使用 Java 查找当前登录用户的用户名 它可能是这样的 System getProperty current user 但是 我不太确定 你实际上非常接近 这就是您正在寻找的 System getProper
  • MemoryStream,无法访问关闭的流

    随着sharpPDF我生成一个 pdf 内存流 我想通过电子邮件直接发送它 但是 ms Seek 行给出了一个 ObjectDisposeException 无法访问关闭的流 pdf CreatePDF 方法采用 输出 文件名字符串或 输出
  • 如何为在 main() 外部和内部声明的变量分配内存

    我注意到 在处理一些大型数组 例如双倍 1000 x 1000 时 如果我在 main 内部声明数组 则我的程序会耗尽内存 但如果我在 main 外部声明数组 则这种情况似乎永远不会发生 即使是更大的阵列 有人可以解释一下区别是什么吗 当在
  • 如何同时更新结构体的多个字段?

    假设我有一个结构 struct Vector3 float x float y float z 注意sizeof Vector3 必须保持不变 编辑 我对没有设置器的解决方案感兴趣 我们不要创建该结构的实例Vector3 pos 我怎样才能
  • 如何从 tsv 文件中提取第一列?

    我有一个包含一些数据的文件 我想仅使用第一列作为我的脚本的标准输入 但我在提取它时遇到问题 我尝试使用这个 awk F t print 1 inputs tsv 但它只显示第一列的第一个字母 我尝试了其他一些操作 但它要么显示整个文件 要么
  • Python 3 C API 中的文件 I/O

    Python 3 0 中的 C API 已更改 弃用 文件对象的许多函数 之前 在 2 X 中 您可以使用 PyObject PyFile FromString char filename char mode 创建一个 Python 文件对
  • 循环遍历 Excel 工作表

    我有以下代码 我希望它在工作簿的其他 25 个工作表中运行 而不是重复代码 25 次 对于每个工作表 有没有办法让它循环 有人可以帮忙吗 Sub DeleteEmptyRows Dim ws As Worksheet Dim strSear
  • 如何在 selenium-webdriver 中获取窗口标题、id 和名称?

    我正在尝试实施以下方法硒网络驱动程序 ruby 获取所有窗口 ID 获取所有窗口标题 获取所有窗口名称 我运行 Selenium IDE 并将脚本导出到 Ruby Test Unit 将其另存为 rb 使用 Aptana Studio 3