如果不是?? 试试??我需要方法方面的帮助



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

这是代码

第一种方法

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">

我认为"不起作用"是指找不到该元素。两个选项:

  1. 根据文档,如果未找到该元素,findElement会引发NoSuchElementException。因此,您可以继续使用findElement并通过try/catch捕获异常。

  2. 或者,使用findElements返回一个List,并根据是否找到任何分支。正如LuisGP指出的那样,避免异常通常是有帮助的。

选项 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"方法即可。

最新更新