框架中的python selenium“Explicit Waits”

时间:2015-05-10 05:49:32

标签: python selenium

在同一页面中,如果使用“wait”将收到错误消息 “NoSuchElementException:消息:无法找到名称为== rw的元素”

如果使用“switch_to_frame”将成功切换帧..

为什么会有不同的?

1)

wait = WebDriverWait(driver, 300)
wait.until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_name('rw')))

2)

driver.switch_to_frame('rw')

3)

class cm(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Ie()
        self.driver.implicitly_wait(30)
        self.base_url = "http://mytestweb.com"


    def testcm(self):
        driver = self.driver
        driver.maximize_window()
        self.driver.get(self.base_url)
        wait = WebDriverWait(driver, 30)
        self.main_wh = driver.window_handles
##        wait.until(EC.invisibility_of_element_located((By.ID,'Frame2')))
        wait.until(EC.frame_to_be_available_and_switch_to_it((By.NAME,'rw')))
##        driver.switch_to_frame('rw')

如果我尝试使用3)将获得超时消息

1 个答案:

答案 0 :(得分:1)

很可能在查找发生之前,没有正确加载实际需要时间加载的名称为 rw 的元素。基本上,您在预期条件到位之前寻找相同的元素。更好的实现如下:

wait = WebDriverWait(driver, 300)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.NAME,'rw')))

请参阅doc