selenium - 如何批量测试 URL 重定向?

标签 selenium curl redirect http-redirect

像 SO 上的许多其他人一样,我不是来自硬核开发背景 - 需要更多的操作。因此,我发现自己正在为类似的事情而苦苦挣扎,我想这很适合这里。

要求 - 我想轻松测试大批量 (1000-50000) URL 重定向。更接近前者。

我想提供的意见

  • 源网址和目标网址

输出我想要...嗯出去

  • 通过/失败
  • HTTP 响应代码

奖励积分 - 使用真正的浏览器(Selenium 等),因为一小部分重定向是在 JS 中完成的。很小。能够选择目标 URL 是否等于第一个重定向或倒数第二个重定向。能够轻松更改 HTTP header (尽管很乐意使用 Fiddler 等注入(inject)这些 header )

我目前的想法

  • 调用curl的Bash脚本。我可以做到这一点,但我的问题是能够使其扩展,即解析 csv 输入而不是手动编辑脚本。而且它不包括 JS 重定向(无破坏性)。似乎是最简单的选择。

  • Selenium IDE 脚本。我可能可以编写脚本,但再次努力将其扩展到 10 个 URL。可能需要解析 CSV 来创建每个脚本,然后将它们输入命令行运行程序,然后捕获输出。

  • 尖叫 Frog 。我真的很喜欢这个工具,它可以批量测试重定向。然而它没有通过/失败的概念。非常接近一站式商店。此外,免费版本不遵循重定向链(即curl中的-L)

这似乎是其他人必须遇到的问题之一,并以我想到的主流/更简单的方式解决了。预先感谢任何可以提供帮助的人。

最佳答案

一种解决方案:

csv:

http://google.com;http://www.google.fr
http://domain.null;http://www.domain.null

代码:

#!/bin/bash

while IFS=";" read -r url1 url2; do
    ret=$(curl -s -o /dev/null -w "%{http_code}\n" "$url1")
    ((ret >= 200 && ret <= 400)) && echo 'url1 PASS' || echo 'url1 FAIL'
    echo "url2 $(curl -s -L -o /dev/null -w "%{http_code}\n" "$url2")"
done < csv

如果您需要知道重定向(或不重定向)的真实 URL,请使用

curl -L -s -o /dev/null http://google.fr -w "%{url_effective}\n"

随时改进以满足您的需求。

关于selenium - 如何批量测试 URL 重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28099637/

相关文章:

php - 如何使用 cURL 从另一个网站获取 javascript 生成的内容?

redirect - 在网络应用程序中调用 phonegap 插件功能

java - Selenium webdriver - 鼠标悬停和下拉菜单 - 鼠标在浏览器内部/外部问题

javascript - 通过 cURL 登录到 Javascript 页面?

php - 如何使用 Google SpreadSheets API 将数据提供给应用程序?

url - 如何在 IIS 8 中编写重写规则,以便所有流量从 http ://www. com 指向 https ://*. *.com?

php - header ("Location: example.php");不工作

java - URL 无法使用 WebDriver 打开

java - 如何使用 maven mvn test 命令行运行动态 testng.xml?

html - Selenium 自动化 - 寻找最佳 xpath