0

我正在使用 Chrome Webdriver 为 Salesforce 页面流执行脚本。这些流程是用 Selenium JUnit 代码编写的,在 JMeter 5.4.1 中作为 JAR(JUnit Request Sampler)导出和执行。该页面有一个弹出窗口,其中有一个文本框。它应该从 CSV 文件(当前保存在 Selenium 项目中)中读取所有值 [例如。value1, value2...value n](1 列,'n' 行)直到所有值都完成。输入一个数据后,单击“下一步”按钮以从 CSV 捕获下一个值。“Tube1Id”是文本框的元素名称。目前,在 JMeter 中运行的流程一直执行到弹出窗口中显示文本框并停止,就在读取 CSV 文件的步骤上。有人可以帮忙吗?

public void jmeterTest() throws InterruptedException
{
    try
    {
        String CSVPath = "C:\\Users\\user\\Documents\\CAREDx\\SeleniumProject\\SeleniumProject\\CSVSamples\\samples.csv";   
        driver.get("https://baseurl/");
        
        /* code for pop up window open with Textbox*/
        
        WebElement Tube1Id = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@name='Tube1Id']")));   
                        
        CSVReader reader = null;
        reader = new CSVReader(new FileReader(CSVPath));
        String[] samples;
        while ((samples = reader.readNext()) != null) 
        {               
            String TubeId = samples[0];
            Tube1Id.sendKeys(TubeId);
            log.info(threadName + "::  Tube ID :: " + TubeId);
            
            /* code for Next button click */
        }
    }
}
4

1 回答 1

0

我找到了另一种解决方法,因为从外部 csv 文件位置读取数据不起作用。

我在 JUnit 请求 [线程组>JUnit 请求>CSV 数据集配置] 下的 JMeter 中添加了一个 CSV 数据集配置元素,添加了 csv 位置和变量名称(示例)。我将 CSV 文件中的值添加为值 1@value 2@...@value n。在我添加的硒代码中:

String samples = junitSampler.getThreadContext().getVariables().get("samples");
String[] arrOfStr = samples.split("@");
/* in-between code */
for (String TubeID : arrOfStr)
{
    Tube1Id.clear();
    Tube1Id.sendKeys(TubeID);
/* remaining code for click Next */
}

它正在工作。

于 2021-06-09T05:51:11.943 回答