[Selenium]如何在Web元素上调用重写方法?

时间:2018-05-29 05:03:44

标签: selenium selenium-webdriver

我在BaseElement类中创建了一个覆盖方法(click()方法),该方法从WebElement接口实现。

我想在适用的所有网页元素上调用此覆盖方法。

WebElement ele = driver.findElement(By.id("button")); //默认返回webelement类型

如何在上面的网络元素上调用覆盖click()方法?

我尝试过将ele转换为BaseElement,如下所示:

BaseElement m_ele = (BaseElement) ele; //没有编译错误但抛出运行时类转换异常

任何想法都可以帮助我在WebElement上调用重写的click()方法吗?我不想使用WebElement的内置click()方法。

如果我必须提供任何其他信息,请告诉我?

这是我的代码段:

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();
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试使用以下代码而不是使用ridden click方法。

SELECT  SPLIT(description,"_") FROM [dbo].[Stg_Event]
# (or)
SELECT  Split(description,':') FROM [dbo].[Stg_Event]