selenium - 我不能运行超过 117 个网址
问题描述
我试图同时运行多个 url 以检查它们是离线还是在线。但是几分钟后出现了这个错误。我猜它一次最多只能运行 117 个链接?这个有解决办法吗?
错误:线程“AWT-EventQueue-0”中的异常 java.lang.IndexOutOfBoundsException:索引 117 超出长度 117 的范围
有人可以帮我解决这个错误吗?
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class BrokenLink {
public static void main(String[] args) throws AWTException {
// TODO Auto-generated method stub
Robot rob = new Robot();
JFrame frame = new JFrame("Broken Link Checker");
JButton runUrls= new JButton("Run");
JLabel urlText = new JLabel(); //Initialize Label
JTextArea urlTextContainer= new JTextArea(); //Initialize Text Area
runUrls.setBounds(250, 275, 100, 50); // X,Y,Height,Width
urlText.setText("Enter URLs Here: ");
urlText.setBounds(30, -10, 200, 100);
urlTextContainer.setBounds(30,55,520,215);
frame.add(runUrls);
frame.add(urlText);
frame.add(urlTextContainer);
frame.setSize(600,400);
frame.setLayout(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
runUrls.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\awoo\\eclipse-workspace\\KeywordSearch\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
HttpURLConnection huc = null;
int respCode = 200;
// TODO Auto-generated method stub
String[] urls = urlTextContainer.getText().split("\n");
driver.get(urls[0]);
try {
huc = (HttpURLConnection)(new URL(driver.getCurrentUrl()).openConnection());
huc.setRequestMethod("HEAD");
huc.connect();
respCode = huc.getResponseCode();
if (respCode != 200) {
System.out.println(driver.getCurrentUrl());
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for(int i = 1; i < urls.length; i++) {
rob.keyPress(KeyEvent.VK_CONTROL);
rob.keyPress(KeyEvent.VK_T);
rob.keyRelease(KeyEvent.VK_CONTROL);
rob.keyRelease(KeyEvent.VK_T);
ArrayList<String> newtab = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window((String) newtab.get(i));
driver.get(urls[i]);
try {
huc = (HttpURLConnection)(new URL(driver.getCurrentUrl()).openConnection());
huc.setRequestMethod("HEAD");
huc.connect();
respCode = huc.getResponseCode();
if (respCode != 200) {
System.out.println(driver.getCurrentUrl());
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
}
}
解决方案
推荐阅读
- xamarin.forms - 如何使用 Xamarin.Forms 自定义渲染器在 ButtonOnClick() 中执行平台 (Android) 特定方法。
- javascript - 如何从这个 json 数据中创建两个数组?
- python - 如何使用 pyspark 从 CSV 中使用 Spark 在镶木地板中设置正确的数据类型
- google-app-engine - GAE:实例计数降至 0,但 min_instances 设置为 1
- javascript - 如何将复杂的 json 渲染到 Jstree 中
- c# - 如何在 C# 中转义消息 System.Int32
- javascript - 如何确保可点击对象不会传播到错误的元素?
- python - 我无法通过 wordpress_xmlrpc 从 python 发布到我的 wordpress 站点我得到 ExpatError: not well-formed (invalid token): line 1, column 222
- dns - 如何获取 DNS Nameserver 的 IP 地址
- powerbi - 尝试使用 Power BI 计算梯度的问题