Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击“按可用id显示元素”_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Java 单击“按可用id显示元素”

Java 单击“按可用id显示元素”,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我有一个奇怪的例子,Angular元素使用两个随机ID呈现html: WebDriverWait webDriverWait = new WebDriverWait(driver, 5); System.out.println("Click on Sub Tab " + title_id + " using id locator " + tab_id); WebElement webElement = webDriverWa

我有一个奇怪的例子,Angular元素使用两个随机ID呈现html:

WebDriverWait webDriverWait = new WebDriverWait(driver, 5);
        System.out.println("Click on Sub Tab " + title_id + " using id locator " + tab_id);
        WebElement webElement = webDriverWait.until(ExpectedConditions.elementToBeClickable(By.id("mat-tab-label-5-0")));
        webElement.click();

顺序是随机的,我需要一些方法来单击可用id。是否有一些方法可以组合,例如:

By.id("mat-tab-label-3-0" OR "mat-tab-label-5-0")

有什么解决办法吗?

假设列出的2个ID是唯一出现的,但出现一个的ID是随机的,您可以尝试以下方法:

WebElement webElement = webDriverWait.until(ExpectedConditions.elementToBeClickable(By.id("mat-tab-label-3-0" | "mat-tab-label-5-0")));

您可以切换到CSS选择器

ExpectedConditions.elementToBeClickable(By.cssSelector("#mat-tab-label-3-0,#mat-tab-label-5-0"))

#
表示ID,
表示OR。

您是在自动运行自己的应用程序还是其他人的?其他人的应用程序。我无法更改源代码。您能使用xpath吗?部分xpath不起作用。您是否收到任何错误?是否可以使用try-catch解决此问题?当然,这是另一个可以获得的路径。这不是有效的ID。您能给我一个cod示例吗?
ExpectedConditions.elementToBeClickable(By.cssSelector("#mat-tab-label-3-0,#mat-tab-label-5-0"))