尽管脚本按预期正常运行,但在 Selenium 中抛出了 InvalidArgument 异常
InvalidArgument Exception is thrown in Selenium eventhough script runs fine as expected
我的第一个问题在这里!请原谅我遗漏了什么!
我已经编写代码从 excel 中选取 URL,然后通过从 excel sheet 中获取相应数据来单击 url 中的元素。脚本 运行 符合预期。但是在循环的最后 运行 之后它仍然抛出 Invalid Argument 异常。没有错误(至少在我看来),我已经验证了 excel 中的 url 链接。他们很好。脚本当前按照我想要的方式运行。但我仍然得到例外。 driver.close 的最后一步没有执行。请检查代码,让我知道哪里出错了。
excel 中的第一列是 url。以下列包含由脚本拾取并用于 linktext 命令以单击 url.
中的元素的文本
package newpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InvalidObjectException;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelRead {
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver","C:\driver\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebDriverWait wait=new WebDriverWait(driver, 20);
String baseUrl = "https://google.com/";
driver.get(baseUrl);
FileInputStream fis = new FileInputStream("D:\test_data.xlsx");
@SuppressWarnings("resource")
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet sheet = workbook.getSheetAt(0);
int s=sheet.getLastRowNum()+1;
for(int i=0; i<s; i++)
{
int k = sheet.getRow(i).getLastCellNum();
XSSFCell cell=sheet.getRow(i).getCell(0);
String url=cell.toString();
driver.get(url);
Thread.sleep(3000);
System.out.println("Launched "+url);
Thread.sleep(5000);
for(int j=1;j<k;j++)
{
String data0=sheet.getRow(i).getCell(j).getStringCellValue();
driver.findElement(By.linkText(data0)).click();
System.out.println(data0+" Saved");
}
}
driver.close();
}
}
当前在脚本 运行 执行后得到:
Exception in thread "main" org.openqa.selenium.InvalidArgumentException: invalid argument
您可以按如下所示检查是否为空。因此,即使 excel 中的数据为空,它也能正常工作。
for(int i=0; i<s; i++)
{
int k = sheet.getRow(i).getLastCellNum();
XSSFCell cell=sheet.getRow(i).getCell(0);
String url=cell.toString();
if(url!=null && !url.isEmpty())
{
driver.get(url);
Thread.sleep(3000);
System.out.println("Launched "+url);
Thread.sleep(5000);
for(int j=1;j<k;j++)
{
String data0=sheet.getRow(i).getCell(j).getStringCellValue();
if(data0!=null && !data0.isEmpty())
driver.findElement(By.linkText(data0)).click();
System.out.println(data0+" Saved");
}
}
}
我的第一个问题在这里!请原谅我遗漏了什么!
我已经编写代码从 excel 中选取 URL,然后通过从 excel sheet 中获取相应数据来单击 url 中的元素。脚本 运行 符合预期。但是在循环的最后 运行 之后它仍然抛出 Invalid Argument 异常。没有错误(至少在我看来),我已经验证了 excel 中的 url 链接。他们很好。脚本当前按照我想要的方式运行。但我仍然得到例外。 driver.close 的最后一步没有执行。请检查代码,让我知道哪里出错了。
excel 中的第一列是 url。以下列包含由脚本拾取并用于 linktext 命令以单击 url.
中的元素的文本package newpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InvalidObjectException;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelRead {
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver","C:\driver\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebDriverWait wait=new WebDriverWait(driver, 20);
String baseUrl = "https://google.com/";
driver.get(baseUrl);
FileInputStream fis = new FileInputStream("D:\test_data.xlsx");
@SuppressWarnings("resource")
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet sheet = workbook.getSheetAt(0);
int s=sheet.getLastRowNum()+1;
for(int i=0; i<s; i++)
{
int k = sheet.getRow(i).getLastCellNum();
XSSFCell cell=sheet.getRow(i).getCell(0);
String url=cell.toString();
driver.get(url);
Thread.sleep(3000);
System.out.println("Launched "+url);
Thread.sleep(5000);
for(int j=1;j<k;j++)
{
String data0=sheet.getRow(i).getCell(j).getStringCellValue();
driver.findElement(By.linkText(data0)).click();
System.out.println(data0+" Saved");
}
}
driver.close();
}
}
当前在脚本 运行 执行后得到:
Exception in thread "main" org.openqa.selenium.InvalidArgumentException: invalid argument
您可以按如下所示检查是否为空。因此,即使 excel 中的数据为空,它也能正常工作。
for(int i=0; i<s; i++)
{
int k = sheet.getRow(i).getLastCellNum();
XSSFCell cell=sheet.getRow(i).getCell(0);
String url=cell.toString();
if(url!=null && !url.isEmpty())
{
driver.get(url);
Thread.sleep(3000);
System.out.println("Launched "+url);
Thread.sleep(5000);
for(int j=1;j<k;j++)
{
String data0=sheet.getRow(i).getCell(j).getStringCellValue();
if(data0!=null && !data0.isEmpty())
driver.findElement(By.linkText(data0)).click();
System.out.println(data0+" Saved");
}
}
}