如何处理wait.until的超时异常

时间:2013-07-11 16:03:28

标签: python selenium wait

在wati.until执行时获取超时异常。我不知道为什么会这样,因为在刷新网页时不会向用户显示img元素。

wait.until(EC.invisibility_of_element_located((By.XPATH,"//img[@src='//www.ibm.com/i/c.gif']")))


raise TimeoutException(message)
selenium.common.exceptions.TimeoutException: Message: ''

这是我的代码:

from selenium import webdriver    
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
from selenium.webdriver.common.by import By
import selenium.webdriver.support.ui as ui

driver=webdriver.Firefox()
driver.get('https://www-01.ibm.com/products/hardware/configurator/americas/bhui/launchNI.wss') 
driver.find_element_by_id("modelnumber").send_keys("7383AC1") 
driver.find_element_by_name("submit").click() 
element1 = driver.find_element_by_xpath("//label[contains(text(),'SLES for SAP Apps 8 Skt Virt Unlimited Subs Only 5Yr (5731SLX)')]")
id=element1.get_attribute('for')
driver.find_element_by_id(id).click()

#updated with wait until
wait.until(EC.invisibility_of_element_located((By.XPATH,"//img[@src='//www.ibm.com/i/c.gif']")))

1 个答案:

答案 0 :(得分:0)

通过修改以下代码来解决我的问题:

driver=webdriver.Firefox()
driver.get('https://www-01.ibm.com/products/hardware/configurator/americas/bhui/launchNI.wss') 
driver.find_element_by_id("modelnumber").send_keys("7383AC1") 
driver.find_element_by_name("submit").click() 
element1 = driver.find_element_by_xpath("//label[contains(text(),'SLES for SAP Apps 8 Skt Virt Unlimited Subs Only 5Yr (5731SLX)')]")
id=element1.get_attribute('for')
driver.find_element_by_id(id).click()
print driver.title

wait=ui.WebDriverWait(driver,300)
image1=driver.find_element_by_xpath("//img[@src='//www.ibm.com/i/c.gif']")
print image1.get_attribute('class')
div1=driver.find_element_by_id("genMask_c")
wati.until(EC.staleness_of(driver.find_element_by_id("genMask_c")), 'visible')
driver.find_element_by_id("continueTop").click()
print driver.title