J'essaie d'accéder à l'icône "Modifier" pour un élément spécifique du tableau dynamique.
HTML -
$(byXpath("//*[text()='"+facilityName+"']/i[@class='fa fa-edit']")).click();
Par exemple. J'ai besoin d'un sélecteur pour l'icône d'édition dans la ligne pour AutomationFacility 9341.0. Cet élément est en cours de création dans mon test, puis je dois cliquer sur l'icône "Modifier" pour cela. Dans ce cas, je ne connais jamais la position de l'élément.
Dans le HTML fourni, l'icône d'édition se trouve à la ligne 183 J'essayais de le trouver par quelque chose comme ceci:
<div class="fixedDataTableLayout_rowsContainer" style="height: 323px; width: 1882px;"> <div class="fixedDataTableColumnResizerLineLayout_main fixedDataTableColumnResizerLineLayout_hiddenElem public_fixedDataTableColumnResizerLine_main" style="width: 0px; height: 325px; left: 0px;"> <div class="fixedDataTableColumnResizerLineLayout_mouseArea" style="height: 325px;"></div> </div> <div class="fixedDataTableRowLayout_rowWrapper" style="width: 1882px; height: 48px; z-index: 1; left: 0px; top: 0px;"> <div class="fixedDataTableRowLayout_main public_fixedDataTableRow_main fixedDataTableLayout_header public_fixedDataTable_header" style="width: 1882px; height: 48px;"> <div class="fixedDataTableRowLayout_body"> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 48px; width: 0px; left: 0px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 48px; position: absolute; width: 0px; z-index: 2; left: 0px; top: 0px;"></div> </div> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 48px; width: 1882px; left: 0px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 48px; position: absolute; width: 1882px; z-index: 0; left: 0px; top: 0px;"> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 48px; width: 916px; left: 0px;"> <div class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell cell-header text-center" style="height: 48px; width: 916px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent"> <div class="sort-by ">Facility <i class="fa fa-sort-undefined" style="margin-left: 3px; position: absolute; top: -3px;"></i> </div> </div> </div> </div> </div> </div> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 48px; width: 866px; left: 916px;"> <div class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell cell-header text-center" style="height: 48px; width: 866px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent"> <div class="sort-by "># of rooms <i class="fa fa-sort-undefined" style="margin-left: 3px; position: absolute; top: -3px;"></i> </div> </div> </div> </div> </div> </div> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 48px; width: 100px; left: 1782px;"> <div class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1" style="height: 48px; width: 100px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent"></div> </div> </div> </div> </div> </div> </div> <div class="" style="left: 0px; height: 48px;"></div> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 48px; width: 0px; left: 1882px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 48px; position: absolute; width: 0px; z-index: 2; left: 0px; top: 0px;"></div> </div> </div> </div> </div> <div> <div class="fixedDataTableRowLayout_rowWrapper" style="width: 1882px; height: 60px; z-index: 0; transform: translate3d(0px, 48px, 0px); backface-visibility: hidden;"> <div class="fixedDataTableRowLayout_main public_fixedDataTableRow_main public_fixedDataTableRow_even public_fixedDataTable_bodyRow" style="width: 1882px; height: 60px;"> <div class="fixedDataTableRowLayout_body"> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 60px; width: 0px; left: 0px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 60px; position: absolute; width: 0px; z-index: 2; transform: translate3d(0px, 0px, 0px); backface-visibility: hidden;"></div> </div> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 60px; width: 1882px; left: 0px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 60px; position: absolute; width: 1882px; z-index: 0; transform: translate3d(0px, 0px, 0px); backface-visibility: hidden;"> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 60px; width: 916px; left: 0px;"> <div data="[object Object],[object Object],[object Object]" field="name" class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell undefined" style="height: 60px; width: 916px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent">uitestsfacility</div> </div> </div> </div> </div> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 60px; width: 866px; left: 916px;"> <div data="[object Object],[object Object],[object Object]" field="roomCount" class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell text-center" style="height: 60px; width: 866px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent">1</div> </div> </div> </div> </div> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 60px; width: 100px; left: 1782px;"> <div class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell text-center" style="height: 60px; width: 100px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent"> <i class="fa fa-edit" data-tip="Edit Facility"></i> <i class="fa fa-trash-o disabled" data-tip="Cannot be deleted due to rooms or devices belonged to this facility"></i> </div> </div> </div> </div> </div> </div> </div> <div class="" style="left: 0px; height: 60px;"></div> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 60px; width: 0px; left: 1882px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 60px; position: absolute; width: 0px; z-index: 2; transform: translate3d(0px, 0px, 0px); backface-visibility: hidden;"></div> </div> </div> </div> </div> <div class="fixedDataTableRowLayout_rowWrapper" style="width: 1882px; height: 60px; z-index: 0; transform: translate3d(0px, 108px, 0px); backface-visibility: hidden;"> <div class="fixedDataTableRowLayout_main public_fixedDataTableRow_main public_fixedDataTableRow_highlighted public_fixedDataTableRow_odd public_fixedDataTable_bodyRow" style="width: 1882px; height: 60px;"> <div class="fixedDataTableRowLayout_body"> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 60px; width: 0px; left: 0px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 60px; position: absolute; width: 0px; z-index: 2; transform: translate3d(0px, 0px, 0px); backface-visibility: hidden;"></div> </div> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 60px; width: 1882px; left: 0px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 60px; position: absolute; width: 1882px; z-index: 0; transform: translate3d(0px, 0px, 0px); backface-visibility: hidden;"> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 60px; width: 916px; left: 0px;"> <div data="[object Object],[object Object],[object Object]" field="name" class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell undefined" style="height: 60px; width: 916px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent">testsearchfacility</div> </div> </div> </div> </div> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 60px; width: 866px; left: 916px;"> <div data="[object Object],[object Object],[object Object]" field="roomCount" class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell text-center" style="height: 60px; width: 866px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent">1</div> </div> </div> </div> </div> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 60px; width: 100px; left: 1782px;"> <div class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell text-center" style="height: 60px; width: 100px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent"> <i class="fa fa-edit" data-tip="Edit Facility"></i> <i class="fa fa-trash-o disabled" data-tip="Cannot be deleted due to rooms or devices belonged to this facility"></i> </div> </div> </div> </div> </div> </div> </div> <div class="" style="left: 0px; height: 60px;"></div> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 60px; width: 0px; left: 1882px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 60px; position: absolute; width: 0px; z-index: 2; transform: translate3d(0px, 0px, 0px); backface-visibility: hidden;"></div> </div> </div> </div> </div> <div class="fixedDataTableRowLayout_rowWrapper" style="width: 1882px; height: 60px; z-index: 0; transform: translate3d(0px, 168px, 0px); backface-visibility: hidden;"> <div class="fixedDataTableRowLayout_main public_fixedDataTableRow_main public_fixedDataTableRow_even public_fixedDataTable_bodyRow fixedDataTableLayout_hasBottomBorder public_fixedDataTable_hasBottomBorder" style="width: 1882px; height: 60px;"> <div class="fixedDataTableRowLayout_body"> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 60px; width: 0px; left: 0px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 60px; position: absolute; width: 0px; z-index: 2; transform: translate3d(0px, 0px, 0px); backface-visibility: hidden;"></div> </div> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 60px; width: 1882px; left: 0px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 60px; position: absolute; width: 1882px; z-index: 0; transform: translate3d(0px, 0px, 0px); backface-visibility: hidden;"> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 60px; width: 916px; left: 0px;"> <div data="[object Object],[object Object],[object Object]" field="name" class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell undefined" style="height: 60px; width: 916px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent">AutomationFacility 1249.0</div> </div> </div> </div> </div> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 60px; width: 866px; left: 916px;"> <div data="[object Object],[object Object],[object Object]" field="roomCount" class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell text-center" style="height: 60px; width: 866px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent">0</div> </div> </div> </div> </div> <div class="fixedDataTableCellLayout_main public_fixedDataTableCell_main" style="height: 60px; width: 100px; left: 1782px;"> <div class="fixedDataTableCellLayout_wrap1 public_fixedDataTableCell_wrap1 text-cell text-center" style="height: 60px; width: 100px;"> <div class="fixedDataTableCellLayout_wrap2 public_fixedDataTableCell_wrap2"> <div class="fixedDataTableCellLayout_wrap3 public_fixedDataTableCell_wrap3"> <div class="public_fixedDataTableCell_cellContent"> <i class="fa fa-edit" data-tip="Edit Facility"></i> <i class="fa fa-trash-o " data-tip="Delete Facility"></i> </div> </div> </div> </div> </div> </div> </div> <div class="" style="left: 0px; height: 60px;"></div> <div class="fixedDataTableCellGroupLayout_cellGroupWrapper" style="height: 60px; width: 0px; left: 1882px;"> <div class="fixedDataTableCellGroupLayout_cellGroup" style="height: 60px; position: absolute; width: 0px; z-index: 2; transform: translate3d(0px, 0px, 0px); backface-visibility: hidden;"></div> </div> </div> </div> </div> </div> </div> </div> </div>
Mais cela ne fonctionne pas et j'obtiens une erreur indiquant que le sélecteur est incorrect.
4 Réponses :
Modifiez les icônes et le texte dont vous voulez dire qu'ils ne sont pas dans un div, voici votre modèle html:
facilityName = "AutomationFacility 1249.0"; $(byXpath("//*[contains(@class,'fixedDataTableCell') and ./preceding-sibling::*[contains(@class,'fixedDataTableCell')]//div[contains(text(),'"+facilityName+"')]]//i[@class='fa fa-edit']")).click();
J'ai essayé d'utiliser contient
et précédent -sibling
, comme ceci:
div div text div div text div div edit icon you mean div div
Essayez de changer la valeur de FacilityName
avec ce que vous attendiez.
Je ne sais jamais quel numéro mon élément va avoir car je pourrais avoir à un moment donné 10 ou 15 lignes et si je clique toujours sur [3], je clique sur le mauvais élément
veuillez fournir le HTML
.
HTML ajouté à la description
@MikhailSiekhin J'ai mis à jour le code, veuillez réessayer.
Vous pouvez utiliser descendant l'axe XPath et contains () combinaison de fonctions comme:
//*[contains(text(), 'AutomationFacility')]/descendant::i[@data-tip='Edit Facility']
Références:
À l'avenir, envisagez d'inclure le code HTML de la page, pas de l'image, les chances d'obtenir une réponse complète seront beaucoup plus élevées
essayez d'utiliser ur xpath mais obtenez toujours une erreur Element not found.
Pour localiser l'icône Modifier par rapport au texte AutomationFacility 1249.0 , vous pouvez utiliser ce qui suit Stratégie du localisateur :
Utilisation de XPATH
:
//div[@class='public_fixedDataTableCell_cellContent' and contains(.,'AutomationFacility 1249')]//following::i[@class='fa fa-edit' and @data-tip='Edit Facility']
Remarque : Vous devez induire WebDriverWait pour le elementToBeClickable souhaité .
Essayez d'utiliser xpath ci-dessous
//div[@class='fixedDataTableLayout_rowsContainer']//child::div[3]//child::div[1]//child::div[1]//child::div[1]//child::div[2]//child::div[1]//child::div[3]//child::div[1]//child::div[1]//child::div[1]//child::div[1]//child::i[@class='fa fa-edit']
Veuillez préciser "ne fonctionne pas". Obtenez-vous une erreur ou un résultat incorrect?
ne postez pas d'image du html, postez le html lui-même s'il vous plaît
Par "ne fonctionne pas", je veux dire que je ne peux pas cliquer sur cet élément et obtenir une erreur indiquant que mon sélecteur est incorrect.