InvalidArgument Исключение выдается в Selenium, хотя скрипт работает нормально, как и ожидалось - PullRequest
0 голосов
/ 03 июля 2019

Мой первый вопрос здесь!Простите, если я что-то пропустил!

Я написал код, чтобы выбрать URL из Excel, а затем нажать на элементы в URL, выбирая соответствующие данные из таблицы Excel.Сценарий работает нормально, как и ожидалось.Но это все еще вызывает исключение Invalid Argument после последнего запуска цикла.Там нет ошибок (по крайней мере, на мой взгляд), и я проверил ссылки URL в Excel.Они в порядке.Скрипт в настоящее время ведет себя так, как я хочу.Но все же я получаю исключение.Последний шаг 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

1 Ответ

0 голосов
/ 04 июля 2019

Вы можете проверить на ноль, как указано ниже.так что, даже если у вас есть пустые данные в 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");


}
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...