HTML代码如下-
<div><a href=""><span>Eligible ITC</span></a></div>
<div><a href=""><span>(A) ITC Available</span></a>
<div id="demo4a">
<table>
<thead>
<tr>
<th>Details</th>
<th>Integrated Tax</th>
</tr>
</thead>
<tbody>
<tr>
<td>(1) Import of goods</td>
<td>0.00</td>
</tr>
</tbody>
</table>
</div>
</div>
<div><a href=""><span>(B) ITC Reversed</span></a>
<div id="demo4b">
<table>
<thead>
<tr>
<th>Details</th>
<th>Integrated Tax</th>
</tr>
</thead>
<tbody>
<tr>
<td>(1) As per rules 42 & 43 of CGST/SGST Rules</td>
<td>5,32,467.00</td>
</tr>
</tbody>
</table>
</div>
</div>
要找到“ div id =“ demo4a””中存在的“表”,我的要求是-
第1步:首先找到文本“符合条件的ITC” 步骤2:然后,找到文本“(A)ITC Available”,因为它出现在文本“ Eligible ITC”之后 步骤3:然后在文字“(A)ITC Available”之后立即找到第一个“表”
要找到“ div id =“ demo4b””中存在的“表”,我的要求是-
第1步:首先找到“符合条件的ITC”文本 步骤2:然后,找到文本“(B)ITC Reversed”,因为它出现在文本“ Eligible ITC”之后,其后是文本“(A)ITC Available” 步骤3:然后在文字“(B)ITC Reversed”之后紧接找到第一个“表格”
到目前为止,我在Java和Selenium中使用“以下” xpath轴进行了尝试-
要找到存在于'div =“ demo4a”中的'表'
对于步骤1:
WebElement tableLocator =
gstr3bFullPageData.findElement(
By.xpath("//*[normalize-space(text())='Eligible ITC']")
);
对于步骤2:--------没办法做到!!! --------
对于步骤3:
List<WebElement> table4_a_Data =
tableLocator.findElements(
By.xpath("following::table[1]")
);
到目前为止,我在Java和Selenium中使用“以下” xpath轴进行了尝试-
要找到存在于'div =“ demo4a”中的'表'
对于步骤1:
WebElement tableLocator =
gstr3bFullPageData.findElement(
By.xpath("//*[normalize-space(text())='Eligible ITC']")
);
对于步骤2:--------没办法做到!!! --------
对于步骤3:
List<WebElement> table4_a_Data =
tableLocator.findElements(
By.xpath("following::table[1]")
);
我的问题是如何使用“跟随” xpath轴(如STEP 3)来定位出现在另一个文本(如STEP 1)之后的文本(如STEP 2)?
在这方面的任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
您可以尝试使用类似的XPATH定位器
//*[@id='demo4a']/table
如果必须使用文本标识表格,请尝试
(//*[text() = 'Eligible ITC']//..//..//..//table)[1]
答案 1 :(得分:0)
用于获取“(A)ITC可用”元素的Xpath:
//div[.//span[text()="Eligible ITC"]]//span[1]
或
//div[.//span[text()="Eligible ITC"]]//span[contains(text(),"(A)")]
获取“表格”元素:
跟随兄弟姐妹:选择当前节点之后的所有兄弟姐妹
//div[.//span[text()="Eligible ITC"]]//div[.//span[contains(text(),"(A)")]]/following-sibling::div[1]/table
或
//div[.="Eligible ITC"]//div[contains(.,"(A)")]/following-sibling::div[1]/table
答案 2 :(得分:0)
您可以尝试以下代码:
WebElement tableLocator = gstr3bFullPageData.findElement(By.xpath("//*[normalize-space(text())='Eligible ITC']"));
WebElement table4_a = tableLocator.findElement(By.xpath("./a[.='(A) ITC Available']"));
WebElement table4_a_Data = table4_a.findElement(By.xpath("./following::table[1]"));
WebElement table4_b = tableLocator.findElement(By.xpath("./a[.='(B) ITC Reversed']"));
WebElement table4_b_Data = table4_b.findElement(By.xpath("./following::table[1]"));
对于a
和b
表,您可以使用id
,而无需使用相对xpath:
WebElement tableA = gstr3bFullPageData.findElement(By.cssSelector("#demo4a table"))
WebElement tableB = gstr3bFullPageData.findElement(By.cssSelector("#demo4b table"))
答案 3 :(得分:0)
我认为以下表达式符合您的步进要求。
要获取第一个表,请尝试使用此xpath表达式
//div/a/span[text()='Eligible ITC']//following::div/a/span[text()='(A) ITC Available']//following::div[1]/table[1]
要获取另一个,请尝试
//div/a/span[text()='Eligible ITC']//following::div/a/span[text()='(B) ITC Reversed']//following::div[1]/table[1]
而且,如果您希望两个表达式都相同,请尝试:
//div/a/span[text()='Eligible ITC']//following::div/a/span[text()= '(A) ITC Available' or text()= '(B) ITC Reversed']//following::div[1]/table[1]