如果别的??尝试??我需要方法方面的帮助

if else?? try?? I need help on methods

如果一种方法有效而另一种方法无效,那么我如何让代码尝试另一种方法?

这是代码

第一种方法

driver.findElement(By.id("com.simplemobiletools.gallery:id/dir_thumbnail")).click();
driver.findElement(By.id("com.simplemobiletools.gallery:id/medium_thumbnail")).click();

第二种方法

driver.findElement(By.id("com.offerup:id/circle")).click(); 
driver.findElement(By.id("com.offerup:id/done")).click();

如果第一种方法不起作用,我希望它继续并尝试第二种方法,但是,我不知道为此使用什么命令。

我在编程方面不是很有经验,所以请多多包涵。

您可以为此目的使用 try catch 块:

try {

  driver.findElement(By.id("com.simplemobiletools.gallery:id/dir_thumbnail")).click();             
  driver.findElement(By.id("com.simplemobiletools.gallery:id/medium_thumbnail")).click();
catch (Exception e) {
  driver.findElement(By.id("com.offerup:id/circle")).click(); 
  driver.findElement(By.id("com.offerup:id/done")).click();
} 

你也可以给出一个特定的异常,例如在你的 catch 参数类型中 "ElementNotFoundException" 或 "ElementNotVisibleException"

我假设 "doesn't work" 你的意思是找不到该元素。两个选项:

  1. 根据 the documentation,如果未找到元素,findElement 会引发 NoSuchElementException。所以你可以继续使用 findElement 并通过 try/catch.

  2. 捕获异常
  3. 或者,使用 findElements, which returns a List, and branch based on whether any were found. As ,避免异常通常很有帮助。

选项 1:

try {
    driver.findElement(By.id("com.simplemobiletools.gallery:id/dir_thumbnail")).click();
    driver.findElement(By.id("com.simplemobiletools.gallery:id/medium_thumbnail")).click();
} catch (NoSuchElementException e) {
    driver.findElement(By.id("com.offerup:id/circle")).click(); 
    driver.findElement(By.id("com.offerup:id/done")).click();
}

或者,如果您打算逐一处理:

try {
    driver.findElement(By.id("com.simplemobiletools.gallery:id/dir_thumbnail")).click();
} catch (NoSuchElementException e) {
    driver.findElement(By.id("com.offerup:id/circle")).click(); 
}
try {
    driver.findElement(By.id("com.simplemobiletools.gallery:id/medium_thumbnail")).click();
} catch (NoSuchElementException e) {
    driver.findElement(By.id("com.offerup:id/done")).click();
}

选项 2(如果你想一个一个地处理它们,如果你只想在第一个结果上分支,你应该能够调整):

List<WebElement> elements;
elements = driver.findElements(By.id("com.simplemobiletools.gallery:id/dir_thumbnail"));
if (element.size() == 0) {
    driver.findElement(By.id("com.offerup:id/circle")).click(); 
} else {
    elements.get(0).click();
}
elements = driver.findElements(By.id("com.simplemobiletools.gallery:id/medium_thumbnail"));
if (elements.size() == 0) {
    driver.findElement(By.id("com.offerup:id/done")).click();
} else {
    elements.get(0).click();
}

您可以尝试点击 4 个给定元素中可见且可点击的元素。这将使您在捕获异常和遵循良好实践后可以安全地单击元素。只有在 4 个元素中找不到元素并且是有效的情况下才会抛出异常。

MobileElement A = driver.findElement(By.id("com.simplemobiletools.gallery:id/dir_thumbnail"));
MobileElement B = driver.findElement(By.id("com.simplemobiletools.gallery:id/medium_thumbnail"));
MobileElement C = driver.findElement(By.id("com.offerup:id/circle"));
MobileElement D = driver.findElement(By.id("com.offerup:id/done"));

public void clickOnElement() {
    try {
        if(A.isDisplayed() && A.isEnabled())
        {
            A.click();
        }
        if(B.isDisplayed() && B.isEnabled())
        {
            B.click();
        }
        if(C.isDisplayed() && C.isEnabled())
        {
            C.click();
        }
        if(D.isDisplayed() && D.isEnabled())
        {
            D.click();
        }

    }catch (Exception e) {
        e.printStackTrace();
    }

}

只需在您的测试用例中调用 'clickOnElement' 方法。