在对话框窗口中选择可见元素

58wvjzkj  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(358)

我有一个angular spa应用程序,它有几个对话框窗口:
完整代码:https://pastebin.com/81ikb5ge

<mat-dialog-container aria-modal="true" class="mat-dialog-container ng-tns-c18-93 ng-trigger ng-trigger-dialogContainer ng-star-inserted" tabindex="-1" id="mat-dialog-12" role="dialog" style="transform: none;"><!----><mobileweb-inquiry-menu-dialog _nghost-shn-c52="" class="ng-star-inserted"><mobileweb-client-area _ngcontent-shn-c52="" id="clientarea" _nghost-shn-c3="">
.....
</mat-dialog-container>

我面临以下问题:在这个对话框中,我有相同的html标记ID。有时我有相同的ID 4次。应用程序运行良好,但我总是得到第一个id,其余的都找不到。
我使用以下代码打开对话框窗口:

WebDriverWait webDriverWait = new WebDriverWait(driver, 25);
        System.out.println("Click on Button " + name + " using id locator " + buttonId);
        WebElement webDriverElement = webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.id(buttonId)));
        webDriverElement.click();

是否有可能隔离该设备 driver webdriver示例是否仅适用于当前活动对话框的元素?例如,是否可以将所有元素放入对话框窗口并剪切所有剩余的html元素?
还有其他解决办法吗?

l5tcr1uw

l5tcr1uw1#

应用程序运行良好,但我始终获得第一个id,其余id未找到:-
对于此问题,您可以尝试使用 xpath axesxpath indexing. 假设您有这样一个xpath:

//input[@class='some-class']

表示4个项目,可以按如下方式执行xpath索引:

(//input[@class='some-class'])[1]

(//input[@class='some-class'])[2]

为此:
是否可以将webdriver的驱动程序示例仅隔离到当前活动对话框的元素?例如,是否可以将所有元素放入对话框窗口并剪切所有剩余的html元素?
我想说的是有一个定位器,代表那个特定的模型对话。
你可以打电话 getAttribute('innerHTML') 并且应该表示特定的html内容。
xpath轴

相关问题