如何使用 Webdriver (Java) 获取下一个随机生成的 parent ID
How to get the next randomly generated parent ID using Webdriver (Java)
<table class="ui-table Schedule detailed">
<thead>
<tbody>
<tr id="Row00000" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00001" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00002" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00003" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00004" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00005" class="Schedule-row 82 odd" data-Schedule-id="82">
<tr id="Row00006" class="Schedule-row 80" data-Schedule-id="80">
<tr id="Row00007" class="Schedule-row 79 odd" data-Schedule-id="79">
<tr id="Row00008" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00009" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00010" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00011" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00012" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00013" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00014" class="Schedule-row 0" data-Schedule-id="0">
<td class="hidden col-id-personNo" data-col-id="personNo"/>
<td class="active w130 col-id-TsDate indicate first yellow" data-col-id="TsDate">
<td class="hidden w100 col-id-StartTime" data-col-id="StartTime"/>
<td class="active col-id-TaskId" data-col-id="TaskId"/>
<td class="hidden col-id-OriginalKey" data-col-id="OriginalKey"/>
<td class="hidden col-id-ScheduleId" data-col-id="ScheduleId"/>
<td class="hidden col-id-TsStatus" data-col-id="TsStatus"/>
<td class="hidden col-id-Quantity" data-col-id="Quantity"/>
<td class="active check w25 col-id-Selected" data-col-id="Selected"/>
<td class="active buttons col-id-RowButton" data-col-id="RowButton"/>
</tr>
<tr id="Row7d6251f9-f6ea-48bb-90fb-356725307245" class="Schedule-row -1 new odd" data-Schedule-id="-1">
我有这个代码。基本上我有一个包含很多行的 table。使用 Webdriver (Java) 我可以单击一个按钮,然后将生成一个具有随机 ID 的新行(在本例中为 Row7d6251f9-f6ea-48bb-90fb-356725307245)。
案例1: 我知道第一行总是固定数字Row00000。我可以使用 while 循环并递增数字,直到我没有得到 Row00015。这意味着最后一个固定行号是 Row00014。我可以将 Row00014 作为我的基准参考,下一个 parent 就是我想要的。
如何跳转到下一个parent(忽略所有属于Row00014的children)并获取新随机生成的ID?
案例2:如果table为空,每当Webdriver点击一个按钮,它会随机创建一个新的按钮行号。
<table class="ui-table Schedule detailed">
<thead>
<tbody>
<tr id="Row7d6251f9-f6ea-48bb-90fb-356725307245" class="Schedule-row -1 new odd" data-Schedule-id="-1">
在这种情况下,我不会有任何碱基参考。如何使用动态随机 id 搜索新行?
谢谢。
您可以使用以下定位器
对于案例 1
By.xpath("//tr[@id='Row00014']/following-sibling::tr[1]")
Or
By.cssSelector("tr#Row00014+tr[id*='Row']")
对于案例 2
By.cssSelector("table[class*='Schedule'] tr[id*='Row']");
Or
By.xpath("//table[contains(@class,'Schedule')]//tr[starts-with(@id,'Row')]")
根据提供的 HTML,新行总是有 class "new." 有了这些信息,您可以使用下面的代码。
WebElement newRow = driver.findElement(By.cssSelector("tr.new"));
// do something with newRow, e.g. newRow.click(), etc.
<table class="ui-table Schedule detailed">
<thead>
<tbody>
<tr id="Row00000" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00001" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00002" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00003" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00004" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00005" class="Schedule-row 82 odd" data-Schedule-id="82">
<tr id="Row00006" class="Schedule-row 80" data-Schedule-id="80">
<tr id="Row00007" class="Schedule-row 79 odd" data-Schedule-id="79">
<tr id="Row00008" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00009" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00010" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00011" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00012" class="Schedule-row 0" data-Schedule-id="0">
<tr id="Row00013" class="Schedule-row 0 odd" data-Schedule-id="0">
<tr id="Row00014" class="Schedule-row 0" data-Schedule-id="0">
<td class="hidden col-id-personNo" data-col-id="personNo"/>
<td class="active w130 col-id-TsDate indicate first yellow" data-col-id="TsDate">
<td class="hidden w100 col-id-StartTime" data-col-id="StartTime"/>
<td class="active col-id-TaskId" data-col-id="TaskId"/>
<td class="hidden col-id-OriginalKey" data-col-id="OriginalKey"/>
<td class="hidden col-id-ScheduleId" data-col-id="ScheduleId"/>
<td class="hidden col-id-TsStatus" data-col-id="TsStatus"/>
<td class="hidden col-id-Quantity" data-col-id="Quantity"/>
<td class="active check w25 col-id-Selected" data-col-id="Selected"/>
<td class="active buttons col-id-RowButton" data-col-id="RowButton"/>
</tr>
<tr id="Row7d6251f9-f6ea-48bb-90fb-356725307245" class="Schedule-row -1 new odd" data-Schedule-id="-1">
我有这个代码。基本上我有一个包含很多行的 table。使用 Webdriver (Java) 我可以单击一个按钮,然后将生成一个具有随机 ID 的新行(在本例中为 Row7d6251f9-f6ea-48bb-90fb-356725307245)。
案例1: 我知道第一行总是固定数字Row00000。我可以使用 while 循环并递增数字,直到我没有得到 Row00015。这意味着最后一个固定行号是 Row00014。我可以将 Row00014 作为我的基准参考,下一个 parent 就是我想要的。
如何跳转到下一个parent(忽略所有属于Row00014的children)并获取新随机生成的ID?
案例2:如果table为空,每当Webdriver点击一个按钮,它会随机创建一个新的按钮行号。
<table class="ui-table Schedule detailed">
<thead>
<tbody>
<tr id="Row7d6251f9-f6ea-48bb-90fb-356725307245" class="Schedule-row -1 new odd" data-Schedule-id="-1">
在这种情况下,我不会有任何碱基参考。如何使用动态随机 id 搜索新行?
谢谢。
您可以使用以下定位器
对于案例 1
By.xpath("//tr[@id='Row00014']/following-sibling::tr[1]")
Or
By.cssSelector("tr#Row00014+tr[id*='Row']")
对于案例 2
By.cssSelector("table[class*='Schedule'] tr[id*='Row']");
Or
By.xpath("//table[contains(@class,'Schedule')]//tr[starts-with(@id,'Row')]")
根据提供的 HTML,新行总是有 class "new." 有了这些信息,您可以使用下面的代码。
WebElement newRow = driver.findElement(By.cssSelector("tr.new"));
// do something with newRow, e.g. newRow.click(), etc.