Я создал один метод переопределения (click()
метод) в классе BaseElement, который реализуется из интерфейса WebElement.
Я хотел бы вызывать этот переопределенный метод для всех веб-элементов, где это применимо.
WebElement ele = driver.findElement(By.id("button"));
// он возвращает тип webelement по умолчанию
Как я могу вызвать мой метод переопределения click()
для вышеуказанного веб-элемента?
Я пытался с приведением элемента down к BaseElement, как показано ниже:
BaseElement m_ele = (BaseElement) ele;
// Нет ошибки компиляции, но выдает исключение приведения класса во время выполнения
Любая идея может помочь мне здесь для вызова переопределенного click()
метода в WebElement?Я не хочу использовать встроенный click()
метод WebElement.
Дайте мне знать, если мне потребуется предоставить какую-либо дополнительную информацию?
Вот мой фрагмент кода:
public class BaseElement implements WebElement {
public BaseElement(WebElement element) {
m_element = element;
}
@Override
public void click() {
try {
m_element.click();
} catch (WebDriverException e) {
try {
logger.debug("Click Failed, Attempting to click by scrolling into view with bottom align option");
scrollIntoView();
m_element.click();
} catch (WebDriverException ef) {
try {
logger.debug("Click Failed, Attempting to click by scrolling into view with top align option");
scrollIntoView(true);
m_element.click();
} catch (WebDriverException e2) {
try {
logger.debug("Click Failed, Attempting to click by scrolling down by 200 pixels");
m_jsDriver.executeScript("window.scrollBy(0,200)");
m_element.click();
} catch (WebDriverException e3) {
logger.debug("Click Failed, Attempting to click by scrolling up by 200 pixels");
m_jsDriver.executeScript("window.scrollBy(0,-200)");
m_element.click();
}
}
}
}
}
}