如何使用 Selenium WebDriver 和 Java 查找损坏的链接

2023-12-10

我想验证网站上的损坏链接,并且我正在使用以下代码:

 public static int invalidLink;
    String currentLink;
    String temp;

    public static void main(String[] args) throws IOException {
        // Launch The Browser
        WebDriver driver = new FirefoxDriver();
        // Enter URL
        driver.get("http://www.applicoinc.com");

        // Get all the links URL
        List<WebElement> ele = driver.findElements(By.tagName("a"));
        System.out.println("size:" + ele.size());
        boolean isValid = false;
        for (int i = 0; i < ele.size(); i++) {

            isValid = getResponseCode(ele.get(i).getAttribute("href"));
            if (isValid) {
                System.out.println("ValidLinks:" + ele.get(i).getAttribute("href"));
                driver.get(ele.get(i).getAttribute("href"));
                List<WebElement> ele1 = driver.findElements(By.tagName("a"));
                System.out.println("InsideSize:" + ele1.size());
                for (int j=0; j<ele1.size(); j++){
                    isValid = getResponseCode(ele.get(j).getAttribute("href"));
                    if (isValid) {
                        System.out.println("ValidLinks:" + ele.get(j).getAttribute("href"));
                    }
                    else{
                        System.out.println("InvalidLinks:"+ ele.get(j).getAttribute("href"));
                    }
                }

                } else {
                    System.out.println("InvalidLinks:"
                            + ele.get(i).getAttribute("href"));
                }

            }
        }
    }


    public static boolean getResponseCode(String urlString) {
        boolean isValid = false;
        try {
            URL u = new URL(urlString);
            HttpURLConnection h = (HttpURLConnection) u.openConnection();
            h.setRequestMethod("GET");
            h.connect();
            System.out.println(h.getResponseCode());
            if (h.getResponseCode() != 404) {
                isValid = true;
            }
        } catch (Exception e) {

        }
        return isValid;
    }

}

我会让它返回一个 int,并且只让 MalformedURLException 成为一个特殊情况,返回 -1。

public static int getResponseCode(String urlString) {
    try {
        URL u = new URL(urlString);
        HttpURLConnection h =  (HttpURLConnection)  u.openConnection();
        h.setRequestMethod("GET");
        h.connect();
        return h.getResponseCode();

    } catch (MalformedURLException e) {
        return -1;
    }
}

编辑:看来您坚持使用布尔方法,正如我之前所说,它有其局限性,但对于演示目的来说应该可以正常工作。

没有理由采用您所采用的方法第二次找到所有元素。尝试这个:

// Get all the links
List<WebElement> ele = driver.findElements(By.tagName("a"));
System.out.println("size:" + ele.size());
boolean isValid = false;
for (int i = 0; i < ele.size(); i++) {
    string nextHref = ele.get(i).getAttribute("href");
    isValid = getResponseCode(nextHref);
    if (isValid) {
        System.out.println("Valid Link:" + nextHref);

    }
    else {
        System.out.println("INVALID Link:" + nextHref);

    }
}

这是未经测试的代码,因此如果它不起作用,请提供更多详细信息,而不仅仅是说“它不起作用”,如果可能,请提供输出和任何堆栈跟踪/错误消息。干杯

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

如何使用 Selenium WebDriver 和 Java 查找损坏的链接 的相关文章

  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • 比较两个文本文件的最快方法是什么,不将移动的行视为不同

    我有两个文件非常大 每个文件有 50000 行 我需要比较这两个文件并识别更改 然而 问题是如果一条线出现在不同的位置 它不应该显示为不同的 例如 考虑这个文件A txt xxxxx yyyyy zzzzz 文件B txt zzzzz xx
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • Hazelcast 分布式锁与 iMap

    我们目前使用 Hazelcast 3 1 5 我有一个简单的分布式锁定机制 应该可以跨多个 JVM 节点提供线程安全性 代码非常简单 private static HazelcastInstance hInst getHazelcastIn
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • RemoteWebDriver 和 WebDriver 有什么区别?

    实际上 我找不到一个很好的解释来解释 RemoteWebDriver 和 Selenium 中的 WebDriver 之间的区别 下面是 eclipse 告诉我将 WebDriver 转换为 RemoteWebDriver 的代码 Remo
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个

随机推荐

  • Math.Pow(等等)实际上是如何工作的

    所以我在谷歌上搜索了很长时间 但几乎什么也没找到 我发现了一些关于 Math Pow 可能实现的信息this url 但它们不准确 例如这段代码 public static double PowerA double a double b i
  • 如何从 Rich Edit Win API 获取 RTF 格式的文本?

    对不起我疯狂的英语 我想获取 RTF 格式的 Rich Edit 中的所有文本 而不是变量的纯文本 我尝试使用 EM STREAMOUT 的 SendMessage 直接将 Rich Edit 写入文件 但无法将内容保存到特定变量 例如 L
  • 如何将多个材质谷歌图表添加到一页?

    这个问题之前已经被问过 但对于旧的corechartAPI 我没有遇到过问题 不是新的Material图表 例如 以下代码将按预期创建两个图表 var data Year Sales Expenses Profit 2014 1000 40
  • git Push 原始头?

    我对 git repo 下的文件做了一些更改 我使用提交了文件git commit 然后我尝试使用git push origin master返回的Everything up to date I typed git push origin
  • dispatch_sync(dispatch_get_global_queue(xxx), task) 是同步还是异步

    正如Apple的文档所说 dispatch get global queue 是一个并发队列 而dispatch sync是串行的意思 那么任务是异步处理还是同步处理 您对队列是什么以及异步与同步的含义感到困惑 队列是可以运行块的实体 这些
  • 通过消除空值来合并 Apache Spark 中的行

    我有一个像下面这样的 Spark 数据框 id 1 2 3 sf 1 sf 2 sf 3 2 null null null 102 202 302 4 null null null 104 204 304 1 null null null
  • numpy 索引:尾随省略号不应该是多余的吗?

    在尝试正确理解 numpy 索引规则时 我偶然发现了以下内容 我曾经认为索引中的尾随省略号没有任何作用 是不是很琐碎 但事实并非如此 Python 3 5 2 default Nov 11 2016 04 18 53 GCC 4 8 5 o
  • 如何手动构建 AVDepthData

    我想构建自己的深度图并保存带有深度信息的图像 例如肖像照片 所以首先我需要生成 AVDepthData 在挖掘了它的构建方式之后 我尝试重现它 func buildDepth let info AnyHashable Any kCGImag
  • 如何访问 xsl:output 属性中的 xsl:param?

    我想允许转换器在样式表中设置一个参数来指定需要多少个缩进空间 我已经尝试了 Dimitre Novatev 在答案中的所有建议here无济于事
  • ThisWorkbook 运行时错误 438

    我有一个 VBA 将唯一值从 Sheet1 复制并粘贴到 Sheet3 上 但是 当我运行 VBA 时 出现运行时错误 438 我的 VBA 看起来像这样 Sub UniqueList Application ScreenUpdating
  • Spring Kafka 中的 Kafka 消费者/生产者测试

    我目前正在研究我正在使用的 Kafka 模块spring kafka卡夫卡通信的抽象 我能够从实际实现的角度集成生产者和消费者 但是 我不确定如何测试 特别是集成测试 消费者周围的业务逻辑 KafkaListener 我试着跟随spring
  • 在 PyCharm 上导入 NLTK 时出错

    我试图在 PyCharm 中导入 NLTK 并收到以下错误 我使用的是 Mac OS 10 5 8 和 Python 2 7 6 可能发生什么事 我对编程完全陌生 如果我缺少一些基本的东西 我很抱歉 安装软件包失败 安装软件包 nltk 时
  • 在 R 包中包含 Shiny 应用程序:传输输入参数

    我正在尝试将 Shiny 应用程序作为 R 包的一部分运行 我按照 Dean Attali 网站上列出的说明进行操作 https deanattali com 2015 04 21 r package shiny app 如该网站所示 我在
  • postgresql 中的字符串文字和转义字符

    尝试将转义字符插入表中会导致警告 例如 create table EscapeTest text varchar 50 insert into EscapeTest text values This is the first part n
  • Firebase Storage getDownloadURL 背后的目的是什么

    根据这些docs 我明白一旦我们在存储中拥有了 firebase 路径 我们就可以通过调用来获取下载网址getDownloadUrl 在这条路径上的ref 我的问题是所有文档都建议首先获取下载网址 然后根据这些图像下载文件数据 但是我们可以
  • Ionic 找不到模块“../providers/auth-service/auth-service”

    我正在尝试在 ionic Angular 3 3 0 中创建登录 注册 我收到错误无法找到模块 providers auth service auth service 在login ts 文件中 请帮忙 auth service ts im
  • 选择具有给定 id 的元素的更快方法

    我有个问题 假设我们有以下 html 标签 div I am a div div 他的div存在于dom上 它不是由javascript生成的 如果我想在 javascript 中多次使用这个 div 哪种方法更好 将其存储在如下变量中 v
  • 在 R 中哪些包可以快速加载更大的数据

    在 R 中 数据通常加载到 RAM 中 是否有任何软件包可以将数据加载到磁盘而不是 RAM 中 查看bigmemory包 以及相关包 例如bigtabulate bigalgebra biganalytics 和更多 还有ff 尽管我发现它
  • 如何沿列迭代向下相乘?

    我在这件事上遇到了困难 不知道为什么 也许现在已经很晚了 我在 pandas 中有一个数据框 如下所示 1 10 2 11 3 20 4 5 5 10 我想计算每一行上面每一行的被乘数 例如 在第 3 行 我想计算 10 11 20 即 2
  • 如何使用 Selenium WebDriver 和 Java 查找损坏的链接

    我想验证网站上的损坏链接 并且我正在使用以下代码 public static int invalidLink String currentLink String temp public static void main String arg