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



我有一个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。有时我有4次相同的id。这个应用程序运行得很好,我总是得到第一个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();

是否可以将WebDriver的driver实例仅与当前活动对话框的元素隔离?例如,是否可以将所有元素都放入对话框窗口,并剪切其余的所有html元素?

还有其他解决方案吗?

应用程序运行良好bug我总是得到第一个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内容。

X路径轴

相关内容

  • 没有找到相关文章

最新更新