Как я могу использовать (WebElement webdriverWait до элемента clickable) в методе и вызвать этот метод для повторного использования - PullRequest
0 голосов
/ 07 декабря 2018

Согласно моему коду ниже, мне нужно регулярно использовать элемент Wait.Есть ли способ, как я могу использовать этот код, вызывая метод?

Любая помощь или предложение будут благодарны.

public static By header = By.xpath ("// * [@id = \ 'content \'] / h1 ");

 public static void ClickLink_Accounts() throws IOException {
    WebDriverWait wait = new WebDriverWait(driver, 50);
    WebElement wait2 = wait.until(ExpectedConditions.elementToBeClickable(header));
    find(Accounts).isDisplayed();
    CaptureScreenshot.Screenshot(driver,"Application HomePage-");
}

public static void ClickLink_Tasks() throws IOException {
    WebDriverWait wait = new WebDriverWait(driver, 50);
    WebElement wait2 = wait.until(ExpectedConditions.elementToBeClickable(header));
    find(Tasks).isDisplayed();
    CaptureScreenshot.Screenshot(driver,"Application HomePage-");
}

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Я думаю, что вы ищете что-то вроде этого

public static void ClickLink_Accounts() throws IOException
{
    waitForHeader();
    find(Accounts).isDisplayed();
    CaptureScreenshot.Screenshot(driver, "Application HomePage-");
}

public static void ClickLink_Tasks() throws IOException
{
    waitForHeader();
    find(Tasks).isDisplayed();
    CaptureScreenshot.Screenshot(driver, "Application HomePage-");
}

public static void waitForHeader()
{
    new WebDriverWait(driver, 50).until(ExpectedConditions.elementToBeClickable(header));
}

Но ... когда я смотрю на ваши два метода ClickLink *, я вижу много дублированного кода.Я хотел бы найти способ объединить эти два (и, возможно, другие будущие методы) в один, который принимает параметр.Я предполагаю, Accounts и Tasks являются By локаторами, так как вы переходите в метод find()?Если это так, вы можете сделать это

public static void ClickLink(By locator) throws IOException
{
    waitForHeader();
    find(locator).isDisplayed();
    CaptureScreenshot.Screenshot(driver, "Application HomePage-");
}

и значительно упростить ваш код.См. DRY для получения дополнительной информации.

0 голосов
/ 07 декабря 2018

Вы можете попробовать это ...

public static void ElementClickable(By selector, Object obj) throws IOException {
    WebDriverWait wait = new WebDriverWait(driver, 50);
    WebElement wait2 = wait.until(ExpectedConditions.elementToBeClickable(selector));
    find(obj).isDisplayed();
    CaptureScreenshot.Screenshot(driver,"Application HomePage-");
}
...