【问题标题】:Simulating different locations for automatic testing模拟不同位置进行自动测试
【发布时间】:2021-01-23 12:43:35
【问题描述】:

对于我的一个爱好项目,我正在为一个复杂的网站构建自动测试软件。

到目前为止,自动测试软件所做的是:

  • 打开网站
  • 在网站上做事
  • 将结果写入文件
  • 关闭网站

非常直接,工作起来就像一个魅力。

根据您访问该网站的位置,该网站具有特定的行为。

为了测试不同类型的位置,我使用 ExpressVPN。再次像魅力一样工作......

但是,虽然“在网站上做事”部分让我付出了很多努力,但我希望我可以自动更改 VPN 位置(或以完全不同的方式完成相同的事情) .有人有什么想法吗?

【问题讨论】:

  • 网站如何确定用户的位置?为了进行测试,您可以添加类似 URL 参数 location 之类的内容,您可以在其中传入一个虚假位置,并据此更改网站的行为。
  • 这将是简单的方法,但我无法更改网站的任何内容,并且它不适用于 URL 参数
  • 因为我可以使用 VPN 模拟不同的位置,所以我假设/猜测它使用来自它访问的设备的 IP 地址
  • 快速谷歌搜索显示可以在代码中执行此操作,例如stackoverflow.com/questions/899349/… 所以这取决于您使用的编程语言。
  • 找到解决方案,将其作为答案发布

标签: automated-tests


【解决方案1】:

经过更多的谷歌搜索、追逐兔子洞、不眠之夜和大量的反复试验,我找到了解决方案。这需要一些(很多)准备,但如果你经常使用它,就像我打算做的那样,这是值得的......

准备

  • 下载并安装 Open VPN GUI
  • 从 ExpressVPN 下载 Open VPN 的配置文件
  • 根据来自 ExpressVPN 的信息编辑配置文件(为此使用了一个脚本,但如果您只做一些,可以手动完成)
  • 使用 OpenVPN 连接到所有服务器(输入凭据),只需完成一次(如果您没有忘记选中“记住密码”框)

实际代码 这是一个非常简单的代码(我知道这个 sn-p 又快又脏,必须添加错误处理和其他东西,但我很高兴我让它工作了)

Dim DirectoryListArray() As String
Dim myDir as String
Dim myFile as String
Dim Counter as Integer
Dim strCommand as String
Dim i as Integer

myDir = "C:\Program Files\OpenVPN\bin\"
ReDim DirectoryListArray(1000)

MyFile = Dir$("C:\Program Files\OpenVPN\config\*.*")
Do While myFile <> ""
    DirectoryListArray(Counter) = myFile
    myFile = Dir$
    Counter = Counter + 1
Loop

ReDim Preserve DirectoryListArray(Counter - 1)

For i = 1 To UBound(DirectoryListArray)
    strCommand = "openvpn-gui.exe --command disconnect_all"
    Call Shell("cmd.exe /c cd /d " & myDir & " & " & strCommand, 1)
    strCommand = "openvpn-gui.exe --command connect " & DirectoryListArray(i)
    Call Shell("cmd.exe /c cd /d " & myDir & " & " & strCommand, 1)

    'Do Stuff on website

Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多