0

我创建了一个测试来创建票证。当我点击“新票”时,它会弹出一个弹出表单。我填写标题和正文,然后单击“保存并新建”。此时我创建了一个循环。当 i<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 秒然后关闭。我的第一张票总是被创建,下一张票总是比失败要花很长时间。我的意思是,在我的最后一行代码中,保存和新建,该行运行大约需要 8 秒,而它应该在发送正文后立即运行。我有一种感觉,这是一个因素。

4

1 回答 1

4

我认为问题与您选择 iframe 的事实有关。一旦你在 iframe 中,它就无法重新找到'txtsummary'.

'txtsummary'发生这种情况的原因是,当您单击 iframe时,焦点已更改为不存在的位置。将焦点返回到最上面的帧插入。

driver.switch_to_default_content()

在循环的顶部,每次运行循环时,它都会从最顶部的帧开始。

于 2013-05-22T23:55:22.740 回答