python timeoutexception_如何在selenium、python中处理TimeoutException

首先,我创建了几个函数来使用它们,而不是默认的“find_element_by_u…”和login()函数来创建“browser”。我就是这么用的:def login():

browser = webdriver.Firefox()

return browser

def find_element_by_id_u(browser, element):

try:

obj = WebDriverWait(browser, 10).until(

lambda browser : browser.find_element_by_id(element)

)

return obj

#########

driver = login()

find_element_by_link_text_u(driver, 'the_id')

现在我通过jenkins使用这些测试(并在虚拟机上启动它们)。如果我得到TimeoutException,浏览器会话将不会被终止,我必须手动转到VM并终止Firefox的进程。当网络浏览器进程处于活动状态时,jenkins不会停止它的工作。

所以我面对这个问题,我希望它可以通过异常处理来解决。

我试图将此添加到自定义函数中,但不清楚异常究竟发生在哪里。即使我得到了行号,它也会把我带到自定义函数,而不是调用的位置:def find_element_by_id_u(browser, element):

try:

obj = WebDriverWait(browser, 1).until(

lambda browser : browser.find_element_by_id(element)

)

return obj

except TimeoutException, err:

print "Timeout Exception for element '{elem}' using find_element_by_id\n".format(elem = element)

print traceback.format_exc()

browser.close()

sys.exit(1)

#########

driver = login()

driver .get(host)

find_element_by_id_u('jj_username').send_keys('login' + Keys.TAB + 'passwd' + Keys.RETURN)

这将为我打印字符串“lambda browser:browser.find_element_by_id(element)”的行号,用于调试。在我的情况下,我有近3000行,所以我需要一个道具行号。

你能和我分享你的到期日吗。

PS:我将程序分成几个脚本,其中一个脚本只包含selenium部分,所以我需要login()函数,从另一个脚本调用它并在其中使用返回的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Selenium进行Web自动化测试时,可能会遇到各种异常情况,如元素找不到、超时、浏览器崩溃等。为了更好地处理这些异常,可以使用Python的异常处理机制来捕获和处理这些异常。以下是一些常见的Selenium异常处理方法: 1. try-except语句:使用try-except语句可以捕获并处理Selenium抛出的异常。例如: ```python from selenium import webdriver from selenium.common.exceptions import NoSuchElementException try: driver = webdriver.Chrome() driver.get("https://www.example.com") element = driver.find_element_by_id("some_element_id") except NoSuchElementException: print("Element not found") finally: driver.quit() ``` 在上面的代码,使用`try`块尝试查找一个元素,如果元素不存在,则会抛出`NoSuchElementException`异常。然后在`except`块进行异常处理,打印出相应的错误信息。最后,使用`finally`块关闭浏览器。 2. 自定义异常处理函数:除了使用`try-except`语句外,还可以自定义异常处理函数来处理Selenium的异常。例如: ```python from selenium import webdriver from selenium.common.exceptions import TimeoutException def handle_exception(driver, exception): if isinstance(exception, TimeoutException): print("Timeout occurred") else: print("An error occurred") driver = webdriver.Chrome() try: driver.get("https://www.example.com") # Some code that may raise exceptions except Exception as e: handle_exception(driver, e) finally: driver.quit() ``` 在上面的代码,定义了一个`handle_exception`函数来根据不同的异常类型进行处理。在`try`块执行可能抛出异常的代码,然后在`except`块调用`handle_exception`函数来处理异常。最后,使用`finally`块关闭浏览器。 这些是处理Selenium异常的两种常见方法,根据具体的测试需求和场景,可以选择合适的异常处理方式。同时,还可以根据Selenium提供的其他异常类来处理更具体的异常情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值