Селен, чтобы проверить, был ли элемент видим на протяжении x секунд - PullRequest
0 голосов
/ 16 июня 2019

Я не могу поделиться кодом, над которым я работаю, из-за проблем с конфиденциальностью, но то, что мне нужно, это довольно просто, и мой код не требуется.

У меня есть XPath элемента. Я хочу проверить, сколько секунд этот элемент был виден, но я понятия не имею, как.

Примером такого псевдокода будет:

while True:
    if driver.find_element_by_xpath('//@[id=element]').HasBeenVisibleFor(20):
        break
    else:
        doStuff()

Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Вы можете использовать явное ожидание видимости и невидимости элемента и получить длительность между ними.

wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of(driver.find_element_by_xpath('//@[id=element]')))
t1 = time.time()

wait.until(EC.invisibility_of_element(driver.find_element_by_xpath('//@[id=element]')))
t2 = time.time()

print(t2-t1)

Чтобы использовать явные ожидания, вам нужно импортировать следующее

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
0 голосов
/ 16 июня 2019

Как насчет того, чтобы добавить element.isDisplayed в метод опроса, который проверяет каждую секунду в течение X секунд

counter=0

while element.is_displayed():
  counter++
  time.sleep(1)
...