您如何 运行 对循环进行通过或失败测试、识别失败并继续通过失败的尝试?
How do you run a pass or fail test on your loop, identify failures, and continue passed failed attempt?
我有一个程序循环遍历用作 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();
}
}
您可以为您正在处理的每一行添加一个 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();
}
希望对你有所帮助。
我有一个程序循环遍历用作 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();
}
}
您可以为您正在处理的每一行添加一个 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();
}
希望对你有所帮助。