如何在 Selenium Web Driver JAVA 中从 table 获取元素
How to get elements from table in Selenium Web Driver JAVA
我正在尝试识别页面的元素。我有 table 并且有很多行具有多个输入。如何从 table 行访问输入?
This is my java class
public class Setting extends Page {
/**Identify Elements of the page*/
@FindBy(id="table-settings")
private WebElement Table;
//Constructor
public Setting()
{
/**Initialize PageFactory WebElements*/
PageFactory.initElements(driver, this);
}
}
参考下面的代码,进行相应的更改,如果您发现其中的任何障碍,请告诉我
@Test
public void test() {
WebElement Webtable=driver.findElement(By.id("TableID")); // Replace TableID with Actual Table ID or Xpath
List<WebElement> TotalRowCount=Webtable.findElements(By.xpath("//*[@id='TableID']/tbody/tr"));
System.out.println("No. of Rows in the WebTable: "+TotalRowCount.size());
// Now we will Iterate the Table and print the Values
int RowIndex=1;
for(WebElement rowElement:TotalRowCount)
{
List<WebElement> TotalColumnCount=rowElement.findElements(By.xpath("td"));
int ColumnIndex=1;
for(WebElement colElement:TotalColumnCount)
{
System.out.println("Row "+RowIndex+" Column "+ColumnIndex+" Data "+colElement.getText());
ColumnIndex=ColumnIndex+1;
}
RowIndex=RowIndex+1;
}
}
试试这个:
您可以尝试使用 xpath 而不是 id 查找特定的输入元素。如果 id 可用于特定元素,则可以使用 id 本身。同样在您的构造函数中,尝试将您的代码从
public Setting()
{
/**Initialize PageFactory WebElements*/
PageFactory.initElements(driver, this);
}
到
public Setting(WebDriver driver)
{
this.driver = driver;
/**Initialize PageFactory WebElements*/
PageFactory.initElements(driver, this);
}
并在您的 class 中尝试添加
WebDriver driver;
在你的@FindBy 语句之前。
我正在尝试识别页面的元素。我有 table 并且有很多行具有多个输入。如何从 table 行访问输入?
This is my java class
public class Setting extends Page {
/**Identify Elements of the page*/
@FindBy(id="table-settings")
private WebElement Table;
//Constructor
public Setting()
{
/**Initialize PageFactory WebElements*/
PageFactory.initElements(driver, this);
}
}
参考下面的代码,进行相应的更改,如果您发现其中的任何障碍,请告诉我
@Test
public void test() {
WebElement Webtable=driver.findElement(By.id("TableID")); // Replace TableID with Actual Table ID or Xpath
List<WebElement> TotalRowCount=Webtable.findElements(By.xpath("//*[@id='TableID']/tbody/tr"));
System.out.println("No. of Rows in the WebTable: "+TotalRowCount.size());
// Now we will Iterate the Table and print the Values
int RowIndex=1;
for(WebElement rowElement:TotalRowCount)
{
List<WebElement> TotalColumnCount=rowElement.findElements(By.xpath("td"));
int ColumnIndex=1;
for(WebElement colElement:TotalColumnCount)
{
System.out.println("Row "+RowIndex+" Column "+ColumnIndex+" Data "+colElement.getText());
ColumnIndex=ColumnIndex+1;
}
RowIndex=RowIndex+1;
}
}
试试这个: 您可以尝试使用 xpath 而不是 id 查找特定的输入元素。如果 id 可用于特定元素,则可以使用 id 本身。同样在您的构造函数中,尝试将您的代码从
public Setting()
{
/**Initialize PageFactory WebElements*/
PageFactory.initElements(driver, this);
}
到
public Setting(WebDriver driver)
{
this.driver = driver;
/**Initialize PageFactory WebElements*/
PageFactory.initElements(driver, this);
}
并在您的 class 中尝试添加
WebDriver driver;
在你的@FindBy 语句之前。