Пожалуйста, помогите мне перебрать все значения ячеек в таблице div. Столбцы таблицы являются динамическими c, поэтому они будут отображаться или нет, в зависимости от типа пользователя, вошедшего в систему.
Я могу получить значения ячеек столбца промежуточного итога и столбца имени отчета, используя ниже xpath:
//*[@id='MyExpenses']/div/div/div[count(preceding-sibling::div)+1 =
count(ancestor::div/div[1]/div[.='Sub-Total']/preceding-sibling::div)+1]"))
//*[@id='MyExpenses']/div/div/div[count(preceding-sibling::div)+1 =
count(ancestor::div/div[1]/div[.=' Report Name ']/preceding-sibling::div)+1]
Однако, когда я пытаюсь сделать то же самое для любого другого столбца, например: Start Date, тогда веб-драйвер возвращает мне значения столбца Report Name. Я пытаюсь указать xpath для даты начала:
//*[@id='MyExpenses']/div/div/div[count(preceding-sibling::div)+1 = count(ancestor::div/div[1]/div[.=' Start Date ']/preceding-sibling::div)+1]
Я также пытался получить значения ячеек по имени класса, но это также не работает для нескольких столбцов, потому что имя класса отличается для заголовка столбца и его значения ячеек, например для начальной даты имя класса: «начало» для заголовка, пока оно есть, «дата» для значений ячеек. Кроме того, значения ячеек End Date имеют один и тот же класс, т.е. 'date'. Таким образом, приведенный ниже xpath также не возвращает желаемый результат:
WebElement pendigTable = driver.findElement(By.xpath("//*[@id='MyExpenses']"));
String startDate = pendigTable.findElements(By.className("date")).getText();
Для пользователя 1:
<div style="width: 100%" class="tab pend active col-12" id="MyExpenses">
<div class="title-table">
<div class="report-name"> Report Name </div>
<div class="type"> Report Type </div>
<div class="start"> Start Date </div>
<div class="end"> End Date </div>
<div class="sub-total">Sub-Total</div>
</div>
<div class="data-table">
<div class="report-name" data-title="Report Name :">
<a href="/gorillapro/web/Expense/AddTransactionToReport?ExpenseId=743">T1</a>
</div>
<div class="type" data-title=" Report Type :"> CORPORATE</div>
<div class="date" data-title="Start Date :"> 6/1/2020 </div>
<div class="date" data-title="End Date :"> 6/30/2020 </div>
<div class="sub-total" data-title="Sub-Total :"> 12.00 </div>
</div>
</div>
Для пользователя 2
<div style="width: 100%" class="tab pend active col-12" id="MyExpenses">
<div class="title-table">
<div class="report-name"> Report Name </div>
<div class="type"> Report Type </div>
<div class="sub-total">Sub-Total</div>
<div id="lblProjectNumber"> Job Number </div>
<div class="start"> Start Date </div>
<div class="end"> End Date </div>
</div>
<div class="data-table">
<div class="report-name" data-title="Report Name :">
<a href="/gorillapro/web/Expense/AddTransactionToReport?ExpenseId=743">T1</a>
</div>
<div class="type" data-title=" Report Type :"> CORPORATE</div>
<div class="sub-total" data-title="Sub-Total :"> 12.00 </div>
<div class="conf-number" data-title="Confirmation No. :"> 1221 </div>
<div class="date" data-title="Start Date :"> 6/1/2020 </div>
<div class="date" data-title="End Date :"> 6/30/2020 </div>
</div>
</div>