我有一個程式回圈通過用作 URL 的 IP 地址檔案。它登錄、進行更改、保存和注銷。我需要執行通過或失敗測驗以查看哪些 URL 沒有完成回圈。此外,我還需要回圈繼續傳遞失敗,同時將它們寫入檔案,這樣我就可以看到哪些沒有通過。現在,程式將回圈直到遇到錯誤的 URL,然后拋出 ERR_CONNECTION_TIMED_OUT。任何幫助將不勝感激,因為我是編程和 SO 的新手。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class IPLog {
WebDriver driver;
private BufferedWriter bwr1;
//Sign In
public void userLogin() throws InterruptedException {
WebDriver driver;
System.setProperty("webdriver.chrome.driver","C:\\Drivers\\chromedriver.exe");
driver = new ChromeDriver();
String data = "";
try {
BufferedReader reader = new BufferedReader(new FileReader("path"));
String line;
while((line = reader.readLine()) != null) {
data ="http://" line;
System.out.println(data);
//open browser
driver.get(data);
driver.switchTo().frame(driver.findElement(By.name("bodyf")));
Thread.sleep(2000);
driver.findElement(By.name("username")).sendKeys("user");
Thread.sleep(2000);
driver.findElement(By.name("password")).sendKeys("pass");
driver.findElement(By.xpath("/html/body/form/span/table/tbody/tr[3]/td/p/input")).click();
//find password
driver.switchTo().frame(driver.findElement(By.name("left")));
driver.findElement(By.xpath("//*[@id=\"4050000\"]/a")).click();
driver.findElement(By.xpath("//*[@id=\"4050000\"]/table/tbody/tr[3]/td[2]/a")).click();
//change password
driver.switchTo().parentFrame();
driver.switchTo().frame(1);
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/form/p[1]/table/tbody/tr[2]/td[2]/input")).sendKeys("newpass");
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/form/p[1]/table/tbody/tr[3]/td[2]/input")).sendKeys("newpass");
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/form/p[2]/input[2]")).click();
//save and logout
Thread.sleep(3000);
driver.switchTo().alert().accept();
driver.switchTo().parentFrame();
driver.switchTo().frame(driver.findElement(By.name("left")));
driver.findElement(By.id("sysLogout")).click();
Thread.sleep(3000);
driver.switchTo().alert().accept();
//completion test
FileWriter writer = new FileWriter("path");
BufferedWriter bwr = (new BufferedWriter(writer));
bwr.write(data "- Test Passed\n");
bwr.write("\n");
try {
FileWriter writer1 = new FileWriter("path");
bwr1 = (new BufferedWriter(writer1));
bwr1.write(data "- Test Failed");
bwr1.write("\n");
System.out.println("fail");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws InterruptedException, IOException {
IPLog obj = new IPLog();
obj.userLogin();
}
}
uj5u.com熱心網友回復:
您可以做的是為您正在處理的每一行添加一個 try-catch。例如,您可以按如下方式重寫回圈:
FileWriter writer = new FileWriter("path");
BufferedWriter bwr = (new BufferedWriter(writer));
while((line = reader.readLine()) != null) {
data ="http://" line;
System.out.println(data);
try {
doActionLine(data);
//add test passed
bwr.write(data "- Test Passed\n");
bwr.write("\n");
} catch (Exception e) {
//add test failed
bwr.write(data "- Test Failed\n");
bwr.write("\n");
}
}
如您所見, doActionLine 函式已經封裝了檢查:
private void doActionLine(String data) throws InterruptedException {
//open browser
driver.get(data);
driver.switchTo().frame(driver.findElement(By.name("bodyf")));
Thread.sleep(2000);
driver.findElement(By.name("username")).sendKeys("user");
Thread.sleep(2000);
driver.findElement(By.name("password")).sendKeys("pass");
driver.findElement(By.xpath("/html/body/form/span/table/tbody/tr[3]/td/p/input")).click();
//find password
driver.switchTo().frame(driver.findElement(By.name("left")));
driver.findElement(By.xpath("//*[@id=\"4050000\"]/a")).click();
driver.findElement(By.xpath("//*[@id=\"4050000\"]/table/tbody/tr[3]/td[2]/a")).click();
//change password
driver.switchTo().parentFrame();
driver.switchTo().frame(1);
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/form/p[1]/table/tbody/tr[2]/td[2]/input")).sendKeys("newpass");
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/form/p[1]/table/tbody/tr[3]/td[2]/input")).sendKeys("newpass");
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/form/p[2]/input[2]")).click();
//save and logout
Thread.sleep(3000);
driver.switchTo().alert().accept();
driver.switchTo().parentFrame();
driver.switchTo().frame(driver.findElement(By.name("left")));
driver.findElement(By.id("sysLogout")).click();
Thread.sleep(3000);
driver.switchTo().alert().accept();
}
我希望這對你有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461581.html
