在同一页面中,如果使用“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)将获得超时消息
答案 0 :(得分:1)
很可能在查找发生之前,没有正确加载实际需要时间加载的名称为 rw 的元素。基本上,您在预期条件到位之前寻找相同的元素。更好的实现如下:
wait = WebDriverWait(driver, 300)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.NAME,'rw')))
请参阅doc