Как найти элемент на веб-странице с отображаемым текстом динамически - PullRequest
0 голосов
/ 22 мая 2018

Как найти элемент, содержимое которого является динамическим.Элементы - это ячейка в таблице, которая получает свое значение динамически.Пожалуйста, обратитесь к приведенному ниже образцу кода:

<tr class="oddrow " style="visibility: visible;">
   <td align="center"><input type="checkbox" onclick="WebForm.markRowForSelection(event)" id="check_ProcessDefinitionTable" xformstype="checkbox" selectnotifier="true" databoundelement="true" style="visibility: visible;"></td>
   <td>
      <div class="fieldsbox" id="xfe2" style="visibility: visible;"><input readonly="" isoutputcontrol="true" xformstype="output" id="clmFolder" xql="tns:Folder" databoundelement="true" __parent="ProcessDefinitionTable" class="input output left_align" absolutexpath="tns:Folder" datatype="string" validate="true" doebivalidate="false" title="Value for Folder." style="" ref="tns:Folder" xmlns:wcpforms="http://xyz.xyz.com/wcp/xforms" _intable="true" maxlength="999999999"></div>
   </td>
   <td>
      <div class="fieldsbox" id="xfe4" style="visibility: visible;"><input readonly="" isoutputcontrol="true" xformstype="output" id="clmShortname" xql="tns:ShortName" databoundelement="true" __parent="ProcessDefinitionTable" class="input output left_align" absolutexpath="tns:ShortName" datatype="string" validate="true" doebivalidate="false" title="Value for Name." style="" ref="tns:ShortName" xmlns:wcpforms="http://xyz.xyz.com/wcp/xforms" _intable="true" maxlength="999999999"></div>
   </td>
   <td>
      <div class="fieldsbox" id="xfe6" style="visibility: visible;"><input readonly="" isoutputcontrol="true" xformstype="output" id="clmDescription" xql="tns:Description" databoundelement="true" __parent="ProcessDefinitionTable" class="input output left_align" absolutexpath="tns:Description" datatype="string" validate="true" doebivalidate="false" title="Value for Description." style="" ref="tns:Description" xmlns:wcpforms="http://xyz.xyz.com/wcp/xforms" _intable="true" maxlength="999999999"></div>
   </td>
   <td>
      <div class="fieldsbox" id="xfe8" style="visibility: visible;"><input readonly="" isoutputcontrol="true" xformstype="output" id="clmModelspace" xql="tns:ModelSpace" databoundelement="true" __parent="ProcessDefinitionTable" class="input output left_align" absolutexpath="tns:ModelSpace" validate="true" datatype="string" doebivalidate="false" displayformat="text" title="Value for Published To." style="" ref="tns:ModelSpace" _intable="true" maxlength="999999999"></div>
   </td>
</tr>
<tr class="evenrow highlight" style="visibility: visible;">
   <td align="center"><input type="checkbox" onclick="WebForm.markRowForSelection(event)" id="check_ProcessDefinitionTable" xformstype="checkbox" selectnotifier="true" databoundelement="true" style="visibility: visible;"></td>
   <td>
      <div class="fieldsbox" id="xfe2" style="visibility: visible;"><input readonly="" isoutputcontrol="true" xformstype="output" id="clmFolder" xql="tns:Folder" databoundelement="true" __parent="ProcessDefinitionTable" class="input output left_align" absolutexpath="tns:Folder" datatype="string" validate="true" doebivalidate="false" title="Value for Folder." style="" ref="tns:Folder" xmlns:wcpforms="http://xyz.xyz.com/wcp/xforms" _intable="true" maxlength="999999999"></div>
   </td>
   <td>
      <div class="fieldsbox" id="xfe4" style="visibility: visible;"><input readonly="" isoutputcontrol="true" xformstype="output" id="clmShortname" xql="tns:ShortName" databoundelement="true" __parent="ProcessDefinitionTable" class="input output left_align" absolutexpath="tns:ShortName" datatype="string" validate="true" doebivalidate="false" title="Value for Name." style="" ref="tns:ShortName" xmlns:wcpforms="http://xyz.xyz.com/wcp/xforms" _intable="true" maxlength="999999999"></div>
   </td>
   <td>
      <div class="fieldsbox" id="xfe6" style="visibility: visible;"><input readonly="" isoutputcontrol="true" xformstype="output" id="clmDescription" xql="tns:Description" databoundelement="true" __parent="ProcessDefinitionTable" class="input output left_align" absolutexpath="tns:Description" datatype="string" validate="true" doebivalidate="false" title="Value for Description." style="" ref="tns:Description" xmlns:wcpforms="http://xyz.xyz.com/wcp/xforms" _intable="true" maxlength="999999999"></div>
   </td>
   <td>
      <div class="fieldsbox" id="xfe8" style="visibility: visible;"><input readonly="" isoutputcontrol="true" xformstype="output" id="clmModelspace" xql="tns:ModelSpace" databoundelement="true" __parent="ProcessDefinitionTable" class="input output left_align" absolutexpath="tns:ModelSpace" validate="true" datatype="string" doebivalidate="false" displayformat="text" title="Value for Published To." style="" ref="tns:ModelSpace" _intable="true" maxlength="999999999"></div>
   </td>
</tr>

Выше <td> - один из трех <td> с в <tr>.Другие <tr> имеют <td> с такими же идентификаторами.Другими словами, три ячейки подряд будут иметь три идентификатора.Но в других строках есть ячейки с теми же тремя идентификаторами.

Как найти любой из <div> или <input>

Dynamic display contents

Ниже приведен снимок приведенного выше HTML-кода, я хочу найти ячейку listImport.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Если вы хотите найти кого-либо div или input, вы можете использовать приведенный ниже селектор и изменить в соответствии с вашими требованиями:

WebElement target = driver.findElement(By.xpath("//div[@class='fieldsbox']//input[@id='clmFolder']"));

Вы можете изменить значение id наполучить желаемое значение из таблицы.Включите попытку tr или td перед селектором, чтобы получить нужную строку.Пример показан ниже (просто для справки, он может быть неверным),

WebElement target = driver.findElement(By.xpath("//tr[1]//td[1]//div[@class='fieldsbox']//input[@id='clmFolder']"));

tr[1] --> First row
td[1] --> First column
0 голосов
/ 22 мая 2018

Учитывая структуру HTML, вы можете найти нужное поле следующим образом:

WebElement target = driver.findElement(By.cssSelector("input[value='ListImport']"));

Используется селектор атрибута CSS для input, чтобы найти его с помощьюзначение установлено на ListImport.Если это не помогло, вам, возможно, придется сделать что-то вроде:

List<WebElement> inputs = driver.findElements(By.tagName('input'));

, а затем перебрать каждый из элементов, оценивая значение поля, чтобы найти тот, который вы ищете.нацеливание на элементы не очень просто, когда на странице мало уникальных идентификаторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...