我创建了一个测试来创建故障单。当我点击“新票”时,会弹出一个弹出窗体。我填写标题和正文,然后点击“保存并新建”。此时我创建了一个循环。当我<10时,重复测试。我可以到第一张票,但在第二张票中,它只是退出并说出我的标题中的错误。我已经到了几乎开始第二张票的地步,但它输入了错误区域的文本,我不明白。它在我的“标题”上方的字段中输入文本。我也有基于ID的send_keys。这是代码:
while i<2:
driver.implicitly_wait(10)
title = f.name()
driver.find_element_by_name('txtsummary')
driver.find_element_by_name('txtsummary').send_keys(title)
driver.find_element_by_name('txtcontactorg').send_keys('unnamed')
body = f.name()
page = driver.find_elements_by_xpath('//td[@class="mceIframeContainer mceFirst mceLast"]/iframe')[1]
page.click()
page.send_keys(body)
driver.find_element_by_xpath('//span[text()="Save and New"]').click()
如果我取出隐式等待,它会在保存第一个文本后立即输入文本到错误的框中。如果我把它留在里面,它就会等待10秒钟然后关闭。我的第一张票总是被创建,并且它总是需要永远而不是下一张票的失败。我的意思是,在我的最后一行代码中,save和new,该行运行需要8秒,而它应该在发送正文后立即执行。我觉得这是一个因素。
答案 0 :(得分:4)
我认为问题与您选择iframe的事实有关。进入iframe后,无法重新找到'txtsummary'
。
发生这种情况的原因是,只要您点击iframe,焦点就会更改为'txtsummary'
不存在的位置。将焦点返回到最顶部的帧插入。
driver.switch_to_default_content()
位于循环的顶部,每次循环运行时,它都将从最顶层开始。