Найти атрибут динамического стиля в веб-элементе - PullRequest
0 голосов
/ 27 июня 2018

У меня проблема с извлечением полного атрибута стиля, так как часть его все еще не достигла DOM. Это изображение, которое иногда загружается на экран в течение 1-2 секунд, так что происходит то, что есть IS строка с атрибутом, но она ИЗМЕНЯЕТСЯ, когда изображение поступает с сервера. Я делаю WebDriverWait для того, чтобы элемент был виден в DOM, но когда я пытаюсь взять его атрибут "style" (который имеет "...; (url:" http: // .... ") ", иногда его там нет, и моя подстрока () не работает.

Вот код:

@Step("Print Image src url")
public String printImage(Integer imgNo){ 
    WebElement imgStyle = (new WebDriverWait(driver, 15)).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(Consts.ACTIVE_IMG_XPATH_1000 + "/div[" + (currentImg + 1) +"]/div[1]"))); 
    String styleString = imgStyle.getAttribute("style");
    Integer idxUrl = styleString.indexOf("url");
    Integer idxJpg = styleString.indexOf("jpg");
    String urlImage = styleString.substring(idxUrl+5,idxJpg+3); //styleString.indexOf("http"),20
    Log.info("V - Image " + imgNo + " src is: " + urlImage);
    return urlImage;
}

Я могу просто добавить System.wait (3000), но я не хочу его использовать. Есть идеи, как решить это лучше? Могу ли я ждать видимости строки?

Спасибо за ваше время.

1 Ответ

0 голосов
/ 27 июня 2018

Как выглядит HTML? Вы можете использовать contains или starts-with и начало URL перед динамической и изменяемой частью. Нравится WebDriverWait(driver, 15).until(EC.visibility_of_element_located(By.XPATH, "//div[contains(@style, 'text']"))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...