首先,我创建了几个函数来使用它们而不是默认的"find_element_by _..."和login()函数来创建"浏览器".这就是我使用它的方式:
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')
Run Code Online (Sandbox Code Playgroud)
现在我通过jenkins使用这些测试(并在虚拟机上启动它们).如果我遇到TimeoutException,浏览器会话将不会被杀死,我必须手动转到VM并终止Firefox的进程.当网络浏览器进程处于活动状态时,詹金斯不会阻止它的工作.
所以我遇到了这个问题,我希望它可能会因异常处理而得到解决.我试着将它添加到我的自定义函数中,但不清楚究竟发生了异常.即使我得到行号,它也会将我带到我的自定义函数,但不是调用的地方:
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)
Run Code Online (Sandbox Code Playgroud)
这将为我打印字符串"lambda browser:browser.find_element_by_id(element)"的行号,它是用于调试的用途.在我的情况下,我有近3000行,所以我需要一个propper行号.
你能和我分享你的经验吗? …