You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby+Selenium多子域名网站测试:解决split方法未定义报错

问题解决

错误根源

ARGV是Ruby接收命令行参数的数组,你执行ruby test.rb test1,test2,test3时,所有子域名被当作单个元素存入数组(即["test1,test2,test3"])。数组没有split方法,直接调用就会触发NoMethodError。另外代码还存在变量名错误——循环中用了未定义的sub,应该是遍历变量cub。

修正后的代码

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome

page_load = sleep 1
# 获取第一个命令行参数,按逗号分割得到子域名列表
sub_domains = ARGV[0].split(",")

sub_domains.each do |sub|
  url = "http://#{sub}.test.com"
  driver.get url
  puts "#{url}"

  begin
    driver.find_element(:id, 'user_login').send_keys 'user 1'
    driver.find_element(:id, 'user_password').send_keys 'password1'
    driver.find_element(:id, 'login_button').click
    puts '登录成功'
  rescue StandardError
    puts '登录失败'
  end
  page_load
  puts '测试完成'
  sleep 5
end
driver.quit

优化建议

  • 更符合命令行习惯的传参方式:用空格分隔子域名(执行ruby test.rb test1 test2 test3),此时直接用sub_domains = ARGV即可,无需调用split。
  • Ruby变量名推荐用下划线命名法(比如page_load),比驼峰式更贴合社区规范。

内容的提问来源于stack exchange,提问作者David Hurl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:09:17