jsReturnsValue ()
Ожидаемые условия из jsReturnsValue()
возвращает Объект и определяется как:
public static ExpectedCondition<java.lang.Object> jsReturnsValue(java.lang.String javaScript)
An expectation for String value from javascript
Parameters:
javaScript - as executable js line
Returns:
true once js return string
visibilityOfElementLocated ()
Ожидаемые условия из visibilityOfElementLocated()
возвращает WebElement и определяется как:
public static ExpectedCondition<WebElement> visibilityOfElementLocated(By locator)
An expectation for checking that an element is present on the DOM of a page and visible. Visibility means that the element is not only displayed but also has a height and width that is greater than 0.
Parameters:
locator - used to find the element
Returns:
the WebElement once it is located and visible
Это сообщение об ошибке ...
The method until(Function<? super WebDriver,V>) in the type FluentWait<WebDriver> is not applicable for the arguments (boolean, ExpectedCondition<WebElement>)
... означает, что until()
не применимо для нескольких типов возврата boolean
и WebElement
.
В вашем случае использования
jsReturnsValue()
возвращает Объект . visibilityOfElementLocated()
возвращает WebElement .
Решение
Если ваш вариант использования соответствует видимости определенного WebElement , вы можете смело игнорировать проблемудля document.readyState, равного «complete» , так как это было бы накладными расходами.Соответствующее обсуждение можно найти в Selenium IE WebDriver работает только во время отладки .
Однако, для использования until()
для visibilityOfElementLocated()
для нескольких элементов схожего типа типов данных выможно следовать приведенному ниже примеру:
Ожидание любого из элементов из By.xpath("//span[@id='id1']")
или By.xpath("//span[@id='id2']")
будет выглядеть так:
new WebDriverWait(driver, 10).until(ExpectedConditions.or(
ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@id='id1']")),
ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@id='id2']"))
));
Ссылки
Вы можете найти несколько подробных обсуждений в
Outro
Есть ли у нас какая-либо общая функция, чтобы проверить, полностью ли загружена страница в Selenium