我有一个包含2列的表。第1栏包含金额的类型,即书费,注册费,第2栏包含金额,即500和400.我想得到第2栏(金额)的文本,如何通过提供文本获得第2栏的文本第1列?由于动态数据集,仅给出第2列的xpath对我不起作用。
金额类型的xpath是:
driver.findElement(By.xpath("//*[@id='charges']/table[2]/tbody/tr[1]/td[1]")).getText(); (text=Book Fee)
driver.findElement(By.xpath("//*[@id='charges']/table[2]/tbody/tr[4]/td[1]")).getText(); (text= Registration fees)
金额的xpath是:
driver.findElement(By.xpath("//*[@id='charges']/table[2]/tbody/tr[1]/td[2]")).getText(); (text= 500.00/=)
driver.findElement(By.xpath("//*[@id='charges']/table[2]/tbody/tr[4]/td[2]")).getText(); (text=1000.00/=)
答案 0 :(得分:0)
尝试以下Book Fee
费用的XPath:
//*[@id='charges']/table[2]/tr/td[text()='Book Fee']/../td[2]
尝试以下Registration fees
费用的XPath:
//*[@id='charges']/table[2]/tr/td[text()='Registration fees']/../td[2]
您可以参数化第一列值,使其适用于所有使用String concatanation:
//*[@id='charges']/table[2]/tr/td[text()=' " + feeType + "']/../td[2]
此处为feeType
,是您作为参数传递给方法的值。
答案 1 :(得分:0)
根据您的问题和您共享的 HTML ,您可以通过代码提取图书费和注册费文本,如下所示:
String bookFeeText = driver.findElement(By.xpath("//*[@id='charges']/table[2]/tbody/tr[1]/td[1]")).getText();
String registrationFeeText = driver.findElement(By.xpath("//*[@id='charges']/table[2]/tbody/tr[4]/td[1]")).getText();
现在,要检索下一列的文本,您可以获取从先前列中提取的文本的帮助,如下所示:
driver.findElement(By.xpath("//*[@id='charges']/table[2]/tbody/tr[1]/td[.='" + bookFeeText + "']//following::td[1]")).getText();
driver.findElement(By.xpath("//*[@id='charges']/table[2]/tbody/tr[4]/td[.='" + registrationFeeText + "']//following::td[1]")).getText();
答案 2 :(得分:0)
所以基本上你想要获得费用类型的金额,无论其在表中的位置如何。
List <WebElement> fee_List=driver.findElements(By.xpath("//*[@id='charges']/table[2]/tbody/tr"));
WebElement bookFeeRow=driver.findElement(By.xpath("//td[text()='Book Fee']/.."));
int bookFeeIndex=fee_List.indexOf(bookFeeRow)+1; //'+1' because index starts from 0 and webelement [indices] start from 1
String bookFeeAmount=driver.findElement(By.xpath("//*[@id='charges']/table[2]/tbody/tr["+bookFeeIndex+"]/td[2]")).getText();