Я бы написал так, как показано ниже.Вы пытаетесь сделать обычный щелчок 5 раз с короткой паузой между попытками.Если выдается исключение, оно съедается и делается другая попытка.Если ни один из этих 5 не успешен, вы делаете одну попытку щелкнуть по нему с помощью JS.Если это не помогло, то произошел сбой журнала и т. Д.
public void click1(WebDriver driver, WebElement element, String name) {
int attempts = 0;
while(attempts < 5) {
try {
element.click();
Add_Log.info("Successfully clicked on " + name);
Reporter.log("Successfully clicked on " + name);
return;
} catch (Exception e) {
}
attempts++;
Thread.Sleep(500); // brief pause between attempts
}
try {
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);
Add_Log.info("Successfully clicked on " + name);
Reporter.log("Successfully clicked on " + name);
return;
} catch (Exception e2) {
Add_Log.info("Not able to click " + name);
Reporter.log("Not able to click " + name);
TestResultStatus.Testfail = true;
Assert.fail("Not able to click " + name);
}
}
ПРИМЕЧАНИЕ. Вероятно, было бы лучше подождать, пока элемент станет активным, прежде чем пытаться щелкнуть по нему.Это, вероятно, исправит большинство ваших проблем.У вас все еще может быть проблема с некоторым диалогом / баннером / вращающимся элементом, перекрывающим элемент, с которым вам нужно будет иметь дело, хотя ... и вы можете справиться с этим с помощью 5 попыток кликов и т. Д.