Java 无法从selenium中的输入元素获取文本

Java 无法从selenium中的输入元素获取文本,java,html,spring,selenium,Java,Html,Spring,Selenium,我使用Java/Spring标记编写了一个html文件,其中包含一些从数据库获取的单选按钮。现在我正在编写Selenium测试用例来单击该单选按钮。当我使用excel工作表读取值时,我的单选按钮值在excel工作表中。那么,如何使用excel中的文本识别单选按钮并从SeleniumWebDriver中单击它呢 我尝试过使用Xpath和WebElement循环,并使用getText()方法,但仍然得到空文本 实际Html: ${productTemp.productName} 现在,当我在浏览

我使用Java/Spring标记编写了一个html文件,其中包含一些从数据库获取的单选按钮。现在我正在编写Selenium测试用例来单击该单选按钮。当我使用excel工作表读取值时,我的单选按钮值在excel工作表中。那么,如何使用excel中的文本识别单选按钮并从SeleniumWebDriver中单击它呢

我尝试过使用Xpath和WebElement循环,并使用getText()方法,但仍然得到空文本

实际Html:

${productTemp.productName}
现在,当我在浏览器中检查时,这个Html生成如下

已检查的Html:

产品*
汽车
公共汽车
卡车
训练
飞机
这些值CAR、BUS、TRUCK、TRAIN、airplane存储在一个excel表中

Example.java
for(int i=0;i使用以下xpath:
List elmnt=driver.findElements(By.xpath(“//input[@name='product']);

使用此xpath:
List elmnt=driver.findElements(By.xpath(“//input[@name='product']);

您可以尝试使用innerText:

String text=list.getAttribute("innerText");

您可以尝试使用innerText:

String text=list.getAttribute("innerText");

您可以用其他方式进行。如果您希望这样做,它将为您提供整个“div”文本值。然后您可以拆分此值并与excel外壳值进行比较

//Radio Button element 
List<WebElement> elmnt = driver.findElements(By.xpath("//div[text()[contains(.,'')]]/input"));
//It returns Entire Div Text  
String[] parts =driver.findElement(By.xpath("//input[@name='product']/parent::div")).getText().split(" ");

for (int i=1;i<parts.length;i++)
    {
          System.out.println(parts[i]);
           elmnt.get(i-1).click();
           Thread.sleep(2000); //sleep i have used for testing purpose not required in real scenario.
    }
//单选按钮元素
List elmnt=driver.findelelements(By.xpath(//div[text()[contains(,“”)]]/input”);
//它返回整个Div文本
String[]parts=driver.findElement(By.xpath(//input[@name='product']/parent::div)).getText().split(“”);

对于(int i=1;i您可以用其他方式进行。如果您希望这样做,它将为您提供完整的“div”文本值。然后您可以拆分此值并与excel外壳值进行比较

//Radio Button element 
List<WebElement> elmnt = driver.findElements(By.xpath("//div[text()[contains(.,'')]]/input"));
//It returns Entire Div Text  
String[] parts =driver.findElement(By.xpath("//input[@name='product']/parent::div")).getText().split(" ");

for (int i=1;i<parts.length;i++)
    {
          System.out.println(parts[i]);
           elmnt.get(i-1).click();
           Thread.sleep(2000); //sleep i have used for testing purpose not required in real scenario.
    }
//单选按钮元素
List elmnt=driver.findelelements(By.xpath(//div[text()[contains(,“”)]]/input”);
//它返回整个Div文本
String[]parts=driver.findElement(By.xpath(//input[@name='product']/parent::div)).getText().split(“”);

对于(inti=1;i,根据您的要求,我将用cell发布另一个答案

for(int j=0; j<totalRows; j++){
         cell = sheet.getRow(j).getCell(0); 
        //Radio Button element 
         List<WebElement> elmnt = driver.findElements(By.xpath("//div[text()[contains(.,'')]]/input"));
         //It returns Entire Div Text  
         String[] parts =driver.findElement(By.xpath("//input[@name='product']/parent::div")).getText().split(" ");

         for (int i=1;i<parts.length;i++)
             {
                    System.out.println(parts[i]);
                    //Verifying cell value here.
                    if(parts[i].trim().equalsIgnoreCase(cell.getStringCellValue()))
                    {
                        elmnt.get(i-1).click();
                    }

              }

         }

for(int j=0;j根据您的要求,我正在用cell发布另一个答案

for(int j=0; j<totalRows; j++){
         cell = sheet.getRow(j).getCell(0); 
        //Radio Button element 
         List<WebElement> elmnt = driver.findElements(By.xpath("//div[text()[contains(.,'')]]/input"));
         //It returns Entire Div Text  
         String[] parts =driver.findElement(By.xpath("//input[@name='product']/parent::div")).getText().split(" ");

         for (int i=1;i<parts.length;i++)
             {
                    System.out.println(parts[i]);
                    //Verifying cell value here.
                    if(parts[i].trim().equalsIgnoreCase(cell.getStringCellValue()))
                    {
                        elmnt.get(i-1).click();
                    }

              }

         }

for(int j=0;j您可以使用下面的xpath获取输入,但最好让开发人员添加关闭标记:

//node()[normalize-space(.)='CAR']/preceding::input[1]

//node()[normalize-space(.)='AEROPLANE']/preceding::input[1]

您可以使用下面的xpath获取输入,但最好让开发人员添加关闭标记:

//node()[normalize-space(.)='CAR']/preceding::input[1]

//node()[normalize-space(.)='AEROPLANE']/preceding::input[1]


已经使用此xpath,我仍然无法获取文本。因为如果您看到没有结束标记。但它是动态生成的。很抱歉,我错过了这一点,请使用*而不是
input
。这可能会有帮助。它似乎不起作用。再次打印相同的空文本。hhh..但您的用例是从m excel,然后单击网页上的文本,对吗?这样您就可以使用
String productName=cell.getStringCellValue()
driver.findelelement(By.xpath(“/*[text()=“+productName+”])直接转到文本xpath。单击();
,您可以从excel工作表中获取产品名称。请告诉我这是否有帮助。当我尝试使用//*[text()=“CAR”]在浏览器中查找元素时。然后我找不到元素,因为文本中有一些空格。已经使用此xpath,我仍然无法获取文本。因为如果您看到没有结束标记。但它是动态生成的。很抱歉,我没有看到,请使用can use*而不是
input
。这可能会有帮助。它似乎不起作用。再次使用相同的空文本ng PrintedOhh..但您的用例是从excel中选取值,然后单击网页上的文本,对吗?因此您可以使用
String productName=cell.getStringCellValue()
driver.findElement(By.xpath(“/*[text()=”+productName+”])直接转到文本xpath。单击();
,您可以从excel工作表中获取产品名称。请告诉我这是否有帮助。当我尝试使用//*[text()=“CAR”]在浏览器中查找元素时。然后我找不到元素,因为文本中有一些空格。我尝试了这个方法,但文本中有一些空格。当我打印文本时,它似乎是空的。你是说,文本是用空格检索的吗?还是只检索空格?如果你在列表中看到它显示了5个元素,那么我的变量列表有5个元素。但是当iam doing list.getText()打印的是空字符如果不是每次HTML都要检索getText,那么我们必须使用innerText()之类的替代方法我尝试了这个方法,但是文本中有一些空格。当我打印文本时,它似乎是空的。你是说,文本是用空格检索的?还是只检索空格?好的,如果你在列表中看到它显示了5个元素。所以我的变量列表有5个元素。但是当我执行list.getText()时如果不要求每次HTML都检索getText,那么我们就必须使用innerText()之类的替代方法,那么它就是在打印空字符很好,现在我可以获取文本了,它似乎正在工作,谢谢。但在for循环中,您迭代了每个元素并单击了它。但我的情况是,所有的值都将存储在excel工作表中,所以如果excel中的值是CAR,则应单击CAR单选按钮。因此,请帮助我确定我正在发布另一个答案来帮助您。如果需要,请接受我的代码很好。现在我可以得到文本了。它似乎很有效。谢谢。但在for循环中,你迭代了每个元素并单击了它。但我的情况是,所有的值都将存储在excel工作表中,所以如果excel中的值是CAR,那么应该单击CAR单选按钮。所以请帮我确定我正在发布另一个答案来帮助你。请接受我的代码是否有效。