I have the below script where I have taken the list of WebElement of the number of rows and subtracted with and then click on the Add button. But the problem over here is – script clicking on the Add button of the second row every time.
Below is my code:
List<WebElement> noofrows = driver.findElements(By.xpath(“//div[contains(@class,’form-tab-name’) and contains(normalize-space(),’Partners’)]/following::div[contains(@class,’ng-untouched’)]”));
int rowcount = noofrows.size();
System.out.println(“no of rows:”+rowcount);
WebElement lastrow = noofrows.get(noofrows.size()-1);
DriverUtil.waitTime(1000);
WebElement addbtn = lastrow.findElement(By.xpath(“//mat-icon[contains(normalize-space(),’add’)]”));
addbtn.click();
How to click on the Last row add button?
HTML:
<div _ngcontent-lkf-c122=”” class=”ng-untouched ng-pristine ng-star-inserted ng-valid”>
<div _ngcontent-lkf-c122=”” class=”form-tab-name form-tab-name-space”> Partners </div>
<div _ngcontent-lkf-c122=”” class=”ng-untouched ng-pristine ng-valid ng-star-inserted”>
<section _ngcontent-lkf-c122=”” class=”resp-grid-partners”>
<div _ngcontent-lkf-c122=”” class=”ng-star-inserted”>
<mat-form-field _ngcontent-lkf-c122=”” appearance=”outline” class=”mat-form-field form-field ng-tns-c92-234 mat-primary mat-form-field-type-mat-select mat-form-field-appearance-outline mat-form-field-can-float mat-form-field-has-label ng-untouched ng-pristine ng-valid mat-form-field-should-float”>
<div class=”mat-form-field-wrapper ng-tns-c92-234″>
<div class=”mat-form-field-flex ng-tns-c92-234″>
<div class=”mat-form-field-outline ng-tns-c92-234 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-234″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-234″ style=”width: 74.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-234″/>
</div>
<div class=”mat-form-field-outline mat-form-field-outline-thick ng-tns-c92-234 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-234″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-234″ style=”width: 74.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-234″/>
</div>
<!—->
<!—->
<!—->
<div class=”mat-form-field-infix ng-tns-c92-234″>
<mat-select _ngcontent-lkf-c122=”” role=”combobox” aria-autocomplete=”none” aria-haspopup=”true” class=”mat-select ng-tns-c95-237 mat-select-required ng-untouched ng-pristine ng-valid ng-star-inserted” aria-labelledby=”mat-form-field-label-381 mat-select-value-43″ id=”mat-select-42″ tabindex=”0″ aria-expanded=”false” aria-required=”true” aria-disabled=”false” aria-invalid=”false” required=””>
<div cdk-overlay-origin=”” class=”mat-select-trigger ng-tns-c95-237″>
<div class=”mat-select-value ng-tns-c95-237″ id=”mat-select-value-43″>
<!—->
<span class=”mat-select-value-text ng-tns-c95-237 ng-star-inserted”>
<span class=”mat-select-min-line ng-tns-c95-237 ng-star-inserted”>CHARTERER</span>
<!—->
<!—->
</span>
<!—->
</div>
<div class=”mat-select-arrow-wrapper ng-tns-c95-237″>
<div class=”mat-select-arrow ng-tns-c95-237″/>
</div>
</div>
<!—->
</mat-select>
<!—->
<!—->
<span class=”mat-form-field-label-wrapper ng-tns-c92-234″>
<label class=”mat-form-field-label ng-tns-c92-234 ng-star-inserted” id=”mat-form-field-label-381″ for=”mat-select-42″ aria-owns=”mat-select-42″>
<!—->
<mat-label _ngcontent-lkf-c122=”” class=”ng-tns-c92-234 ng-star-inserted”> Partner Role </mat-label>
<!—->
<span aria-hidden=”true” class=”mat-placeholder-required mat-form-field-required-marker ng-tns-c92-234 ng-star-inserted”> *</span>
<!—->
</label>
<!—->
</span>
</div>
<!—->
</div>
<!—->
<div class=”mat-form-field-subscript-wrapper ng-tns-c92-234″>
<!—->
<div class=”mat-form-field-hint-wrapper ng-tns-c92-234 ng-trigger ng-trigger-transitionMessages ng-star-inserted” style=”opacity: 1; transform: translateY(0%);”>
<!—->
<div class=”mat-form-field-hint-spacer ng-tns-c92-234″/>
</div>
<!—->
</div>
</div>
</mat-form-field>
</div>
<div _ngcontent-lkf-c122=”” class=”ng-star-inserted”>
<mat-form-field _ngcontent-lkf-c122=”” appearance=”outline” class=”mat-form-field form-field ng-tns-c92-235 mat-primary mat-form-field-type-mat-input mat-form-field-appearance-outline mat-form-field-can-float mat-form-field-should-float mat-form-field-has-label ng-untouched ng-pristine ng-valid”>
<div class=”mat-form-field-wrapper ng-tns-c92-235″>
<div class=”mat-form-field-flex ng-tns-c92-235″>
<div class=”mat-form-field-outline ng-tns-c92-235 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-235″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-235″ style=”width: 80.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-235″/>
</div>
<div class=”mat-form-field-outline mat-form-field-outline-thick ng-tns-c92-235 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-235″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-235″ style=”width: 80.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-235″/>
</div>
<!—->
<!—->
<!—->
<div class=”mat-form-field-infix ng-tns-c92-235″>
<!—->
<input _ngcontent-lkf-c122=”” matinput=”” class=”mat-input-element mat-form-field-autofill-control ng-untouched ng-pristine ng-valid cdk-text-field-autofill-monitored ng-star-inserted” type=”text” required=”” id=”partnerName” aria-invalid=”false” aria-required=”true” maxlength=”100″>
<!—->
<span class=”mat-form-field-label-wrapper ng-tns-c92-235″>
<label class=”mat-form-field-label ng-tns-c92-235 ng-star-inserted” id=”mat-form-field-label-383″ for=”partnerName” aria-owns=”partnerName”>
<!—->
<mat-label _ngcontent-lkf-c122=”” class=”ng-tns-c92-235 ng-star-inserted”> Partner name </mat-label>
<!—->
<span aria-hidden=”true” class=”mat-placeholder-required mat-form-field-required-marker ng-tns-c92-235 ng-star-inserted”> *</span>
<!—->
</label>
<!—->
</span>
</div>
<!—->
</div>
<!—->
<div class=”mat-form-field-subscript-wrapper ng-tns-c92-235″>
<!—->
<div class=”mat-form-field-hint-wrapper ng-tns-c92-235 ng-trigger ng-trigger-transitionMessages ng-star-inserted” style=”opacity: 1; transform: translateY(0%);”>
<!—->
<div class=”mat-form-field-hint-spacer ng-tns-c92-235″/>
</div>
<!—->
</div>
</div>
</mat-form-field>
</div>
<div _ngcontent-lkf-c122=”” class=”ng-star-inserted”>
<mat-form-field _ngcontent-lkf-c122=”” appearance=”outline” class=”mat-form-field form-field ng-tns-c92-236 mat-primary mat-form-field-type-mat-input mat-form-field-appearance-outline mat-form-field-can-float mat-form-field-should-float mat-form-field-has-label ng-untouched ng-pristine ng-valid”>
<div class=”mat-form-field-wrapper ng-tns-c92-236″>
<div class=”mat-form-field-flex ng-tns-c92-236″>
<div class=”mat-form-field-outline ng-tns-c92-236 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-236″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-236″ style=”width: 80.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-236″/>
</div>
<div class=”mat-form-field-outline mat-form-field-outline-thick ng-tns-c92-236 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-236″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-236″ style=”width: 80.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-236″/>
</div>
<!—->
<!—->
<!—->
<div class=”mat-form-field-infix ng-tns-c92-236″>
<!—->
<input _ngcontent-lkf-c122=”” matinput=”” class=”mat-input-element mat-form-field-autofill-control ng-untouched ng-pristine ng-valid cdk-text-field-autofill-monitored ng-star-inserted” type=”text” required=”” id=”partnerEmail” aria-invalid=”false” aria-required=”true” maxlength=”100″>
<!—->
<span class=”mat-form-field-label-wrapper ng-tns-c92-236″>
<label class=”mat-form-field-label ng-tns-c92-236 ng-star-inserted” id=”mat-form-field-label-385″ for=”partnerEmail” aria-owns=”partnerEmail”>
<!—->
<mat-label _ngcontent-lkf-c122=”” class=”ng-tns-c92-236 ng-star-inserted”> Partner Email </mat-label>
<!—->
<span aria-hidden=”true” class=”mat-placeholder-required mat-form-field-required-marker ng-tns-c92-236 ng-star-inserted”> *</span>
<!—->
</label>
<!—->
</span>
</div>
<!—->
</div>
<!—->
<div class=”mat-form-field-subscript-wrapper ng-tns-c92-236″>
<!—->
<div class=”mat-form-field-hint-wrapper ng-tns-c92-236 ng-trigger ng-trigger-transitionMessages ng-star-inserted” style=”opacity: 1; transform: translateY(0%);”>
<!—->
<div class=”mat-form-field-hint-spacer ng-tns-c92-236″/>
</div>
<!—->
</div>
</div>
</mat-form-field>
</div>
<!—->
<div _ngcontent-lkf-c122=””>
<button _ngcontent-lkf-c122=”” mat-icon-button=”” aria-hidden=”false” aria-label=”add” class=”mat-focus-indicator add-icon mat-icon-button mat-button-base”>
<span class=”mat-button-wrapper”>
<mat-icon _ngcontent-lkf-c122=”” role=”img” class=”mat-icon notranslate material-icons mat-icon-no-color” aria-hidden=”true” data-mat-icon-type=”font”>add</mat-icon>
</span>
<span matripple=”” class=”mat-ripple mat-button-ripple mat-button-ripple-round”/>
<span class=”mat-button-focus-overlay”/>
</button>
<button _ngcontent-lkf-c122=”” mat-icon-button=”” aria-hidden=”false” aria-label=”delete” class=”mat-focus-indicator add-icon mat-icon-button mat-button-base” style=”padding-left: 5px;”>
<span class=”mat-button-wrapper”>
<mat-icon _ngcontent-lkf-c122=”” role=”img” class=”mat-icon notranslate material-icons mat-icon-no-color” aria-hidden=”true” data-mat-icon-type=”font”>delete</mat-icon>
</span>
<span matripple=”” class=”mat-ripple mat-button-ripple mat-button-ripple-round”/>
<span class=”mat-button-focus-overlay”/>
</button>
</div>
</section>
</div>
<div _ngcontent-lkf-c122=”” class=”ng-untouched ng-pristine ng-valid ng-star-inserted”>
<section _ngcontent-lkf-c122=”” class=”resp-grid-partners”>
<div _ngcontent-lkf-c122=”” class=”ng-star-inserted”>
<mat-form-field _ngcontent-lkf-c122=”” appearance=”outline” class=”mat-form-field form-field ng-tns-c92-238 mat-primary mat-form-field-type-mat-select mat-form-field-appearance-outline mat-form-field-can-float mat-form-field-has-label ng-untouched ng-pristine ng-valid mat-form-field-should-float”>
<div class=”mat-form-field-wrapper ng-tns-c92-238″>
<div class=”mat-form-field-flex ng-tns-c92-238″>
<div class=”mat-form-field-outline ng-tns-c92-238 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-238″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-238″ style=”width: 74.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-238″/>
</div>
<div class=”mat-form-field-outline mat-form-field-outline-thick ng-tns-c92-238 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-238″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-238″ style=”width: 74.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-238″/>
</div>
<!—->
<!—->
<!—->
<div class=”mat-form-field-infix ng-tns-c92-238″>
<mat-select _ngcontent-lkf-c122=”” role=”combobox” aria-autocomplete=”none” aria-haspopup=”true” class=”mat-select ng-tns-c95-241 mat-select-required ng-untouched ng-pristine ng-valid ng-star-inserted” aria-labelledby=”mat-form-field-label-387 mat-select-value-45″ id=”mat-select-44″ tabindex=”0″ aria-expanded=”false” aria-required=”true” aria-disabled=”false” aria-invalid=”false” required=””>
<div cdk-overlay-origin=”” class=”mat-select-trigger ng-tns-c95-241″>
<div class=”mat-select-value ng-tns-c95-241″ id=”mat-select-value-45″>
<!—->
<span class=”mat-select-value-text ng-tns-c95-241 ng-star-inserted”>
<span class=”mat-select-min-line ng-tns-c95-241 ng-star-inserted”>CHARTERER</span>
<!—->
<!—->
</span>
<!—->
</div>
<div class=”mat-select-arrow-wrapper ng-tns-c95-241″>
<div class=”mat-select-arrow ng-tns-c95-241″/>
</div>
</div>
<!—->
</mat-select>
<!—->
<!—->
<span class=”mat-form-field-label-wrapper ng-tns-c92-238″>
<label class=”mat-form-field-label ng-tns-c92-238 ng-star-inserted” id=”mat-form-field-label-387″ for=”mat-select-44″ aria-owns=”mat-select-44″>
<!—->
<mat-label _ngcontent-lkf-c122=”” class=”ng-tns-c92-238 ng-star-inserted”> Partner Role </mat-label>
<!—->
<span aria-hidden=”true” class=”mat-placeholder-required mat-form-field-required-marker ng-tns-c92-238 ng-star-inserted”> *</span>
<!—->
</label>
<!—->
</span>
</div>
<!—->
</div>
<!—->
<div class=”mat-form-field-subscript-wrapper ng-tns-c92-238″>
<!—->
<div class=”mat-form-field-hint-wrapper ng-tns-c92-238 ng-trigger ng-trigger-transitionMessages ng-star-inserted” style=”opacity: 1; transform: translateY(0%);”>
<!—->
<div class=”mat-form-field-hint-spacer ng-tns-c92-238″/>
</div>
<!—->
</div>
</div>
</mat-form-field>
</div>
<div _ngcontent-lkf-c122=”” class=”ng-star-inserted”>
<mat-form-field _ngcontent-lkf-c122=”” appearance=”outline” class=”mat-form-field form-field ng-tns-c92-239 mat-primary mat-form-field-type-mat-input mat-form-field-appearance-outline mat-form-field-can-float mat-form-field-should-float mat-form-field-has-label ng-untouched ng-pristine ng-valid”>
<div class=”mat-form-field-wrapper ng-tns-c92-239″>
<div class=”mat-form-field-flex ng-tns-c92-239″>
<div class=”mat-form-field-outline ng-tns-c92-239 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-239″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-239″ style=”width: 80.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-239″/>
</div>
<div class=”mat-form-field-outline mat-form-field-outline-thick ng-tns-c92-239 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-239″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-239″ style=”width: 80.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-239″/>
</div>
<!—->
<!—->
<!—->
<div class=”mat-form-field-infix ng-tns-c92-239″>
<!—->
<input _ngcontent-lkf-c122=”” matinput=”” class=”mat-input-element mat-form-field-autofill-control ng-untouched ng-pristine ng-valid cdk-text-field-autofill-monitored ng-star-inserted” type=”text” required=”” id=”partnerName” aria-invalid=”false” aria-required=”true” maxlength=”100″>
<!—->
<span class=”mat-form-field-label-wrapper ng-tns-c92-239″>
<label class=”mat-form-field-label ng-tns-c92-239 ng-star-inserted” id=”mat-form-field-label-389″ for=”partnerName” aria-owns=”partnerName”>
<!—->
<mat-label _ngcontent-lkf-c122=”” class=”ng-tns-c92-239 ng-star-inserted”> Partner name </mat-label>
<!—->
<span aria-hidden=”true” class=”mat-placeholder-required mat-form-field-required-marker ng-tns-c92-239 ng-star-inserted”> *</span>
<!—->
</label>
<!—->
</span>
</div>
<!—->
</div>
<!—->
<div class=”mat-form-field-subscript-wrapper ng-tns-c92-239″>
<!—->
<div class=”mat-form-field-hint-wrapper ng-tns-c92-239 ng-trigger ng-trigger-transitionMessages ng-star-inserted” style=”opacity: 1; transform: translateY(0%);”>
<!—->
<div class=”mat-form-field-hint-spacer ng-tns-c92-239″/>
</div>
<!—->
</div>
</div>
</mat-form-field>
</div>
<div _ngcontent-lkf-c122=”” class=”ng-star-inserted”>
<mat-form-field _ngcontent-lkf-c122=”” appearance=”outline” class=”mat-form-field form-field ng-tns-c92-240 mat-primary mat-form-field-type-mat-input mat-form-field-appearance-outline mat-form-field-can-float mat-form-field-should-float mat-form-field-has-label ng-untouched ng-pristine ng-valid”>
<div class=”mat-form-field-wrapper ng-tns-c92-240″>
<div class=”mat-form-field-flex ng-tns-c92-240″>
<div class=”mat-form-field-outline ng-tns-c92-240 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-240″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-240″ style=”width: 80.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-240″/>
</div>
<div class=”mat-form-field-outline mat-form-field-outline-thick ng-tns-c92-240 ng-star-inserted”>
<div class=”mat-form-field-outline-start ng-tns-c92-240″ style=”width: 5.5px;”/>
<div class=”mat-form-field-outline-gap ng-tns-c92-240″ style=”width: 80.5px;”/>
<div class=”mat-form-field-outline-end ng-tns-c92-240″/>
</div>
<!—->
<!—->
<!—->
<div class=”mat-form-field-infix ng-tns-c92-240″>
<!—->
<input _ngcontent-lkf-c122=”” matinput=”” class=”mat-input-element mat-form-field-autofill-control ng-untouched ng-pristine ng-valid cdk-text-field-autofill-monitored ng-star-inserted” type=”text” required=”” id=”partnerEmail” aria-invalid=”false” aria-required=”true” maxlength=”100″>
<!—->
<span class=”mat-form-field-label-wrapper ng-tns-c92-240″>
<label class=”mat-form-field-label ng-tns-c92-240 ng-star-inserted” id=”mat-form-field-label-391″ for=”partnerEmail” aria-owns=”partnerEmail”>
<!—->
<mat-label _ngcontent-lkf-c122=”” class=”ng-tns-c92-240 ng-star-inserted”> Partner Email </mat-label>
<!—->
<span aria-hidden=”true” class=”mat-placeholder-required mat-form-field-required-marker ng-tns-c92-240 ng-star-inserted”> *</span>
<!—->
</label>
<!—->
</span>
</div>
<!—->
</div>
<!—->
<div class=”mat-form-field-subscript-wrapper ng-tns-c92-240″>
<!—->
<div class=”mat-form-field-hint-wrapper ng-tns-c92-240 ng-trigger ng-trigger-transitionMessages ng-star-inserted” style=”opacity: 1; transform: translateY(0%);”>
<!—->
<div class=”mat-form-field-hint-spacer ng-tns-c92-240″/>
</div>
<!—->
</div>
</div>
</mat-form-field>
</div>
<!—->
<div _ngcontent-lkf-c122=””>
<button _ngcontent-lkf-c122=”” mat-icon-button=”” aria-hidden=”false” aria-label=”add” class=”mat-focus-indicator add-icon mat-icon-button mat-button-base”>
<span class=”mat-button-wrapper”>
<mat-icon _ngcontent-lkf-c122=”” role=”img” class=”mat-icon notranslate material-icons mat-icon-no-color” aria-hidden=”true” data-mat-icon-type=”font”>add</mat-icon>
</span>
<span matripple=”” class=”mat-ripple mat-button-ripple mat-button-ripple-round”/>
<span class=”mat-button-focus-overlay”/>
</button>
<button _ngcontent-lkf-c122=”” mat-icon-button=”” aria-hidden=”false” aria-label=”delete” class=”mat-focus-indicator add-icon mat-icon-button mat-button-base” style=”padding-left: 5px;”>
<span class=”mat-button-wrapper”>
<mat-icon _ngcontent-lkf-c122=”” role=”img” class=”mat-icon notranslate material-icons mat-icon-no-color” aria-hidden=”true” data-mat-icon-type=”font”>delete</mat-icon>
</span>
<span matripple=”” class=”mat-ripple mat-button-ripple mat-button-ripple-round”/>
<span class=”mat-button-focus-overlay”/>
</button>
</div>
</section>
</div>
<!—->
</div>
Source: Read More