【问题标题】:Selenium to check if element has been visible for x amount of secondsSelenium 检查元素是否可见 x 秒
【发布时间】:2019-06-16 11:30:55
【问题描述】:
由于隐私问题,我无法分享我正在处理的代码,但我需要它相当简单,我的代码不应该是必需的。
我有一个元素的 XPath。我想检查该元素可见的秒数,但我不知道如何。
这样的伪代码示例是:
while True:
if driver.find_element_by_xpath('//@[id=element]').HasBeenVisibleFor(20):
break
else:
doStuff()
请帮忙!
【问题讨论】:
标签:
python
selenium
chromium
【解决方案1】:
您可以使用显式等待元素的可见性和不可见性并获取它们之间的持续时间。
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
【解决方案2】:
如果你在 poll 方法中添加一个 element.isDisplayed 怎么样,每秒检查 X 秒
counter=0
while element.is_displayed():
counter++
time.sleep(1)