【发布时间】:2020-05-16 01:52:11
【问题描述】:
所以我正在尝试为在 iframe 中包含一些元素的网页编写测试。我已经能够使用 webdriver.Firefox() 成功运行测试而没有任何问题,但是如果我将其切换到 webdriver.Chrome() 我会在以下代码行中遇到超时异常:
self.driver.switch_to.frame(0)
self.activity_status = WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#overview > div.details.w-66 > div > div.duration-and-status > span.status.stat_incomplete#')))
如果我没有办法解决这个问题,那就太好了。
感谢您的帮助。
编辑,页面的部分html:
<iframe id="iframe_course_details" allowfullscreen="" src="../Course/Details.aspx?HidePageNav=true&IsInIframe=true"></iframe>
关闭 编辑(非活动) 编辑
<span id="ctl00_cph_main_content_area_ucCourseDetails_spn_favourite" class="favourite button tooltipstered" style="display: none;">Favourite</span>
<span id="ctl00_cph_main_content_area_ucCourseDetails_spn_basket_dull" class="add-to-basket button delete tooltipstered" style="display: none;">Enrolled (Remove From Enrolments)</span>
<span id="ctl00_cph_main_content_area_ucCourseDetails_spn_basket" class="add-to-basket button tooltipstered">Add to Enrolments</span>
<span id="ctl00_cph_main_content_area_ucCourseDetails_spn_print" class="print button tooltipstered">Print</span>
</div>
<section id="overview" style="opacity: 1;">
<div id="fullname" class="fullname w-100" style="display: none;">
</div>
<div class="image w-33" style="cursor: pointer;">
<div style="background-image:url(/App_Themes/MainTheme-responsive/Images/Course/webcast.jpg);"></div></div>
<div class="details w-66">
<div class="inner">
<h2>testing activity</h2>
<div class="star-rating-num-ratings">
<div class="star-rating">
<span></span><span></span><span></span><span></span><span></span>
</div>
<span class="num-of-ratings">0 Ratings</span>
</div>
<div class="duration-and-status">
<span class="duration">
<label>
Duration:
</label>
<span>0</span>
</span>
<span class="status stat_incomplete">Started</span>
</div>
编辑 2:
所以我们设法找到了解决这个问题的方法,它比原来的问题更令人困惑
WebDriverWait(self.driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, 'iframe_course_details')))
time.sleep(0)
self.activity_status = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="overview"]/div[3]/div/div[2]/span[2]')))
我真的很想听听一些关于为什么会这样的理论,没有 'time.sleep(0) 会超时。
【问题讨论】:
-
不完全是答案,但在 Chrome 中帧号仍然为 0 吗?
-
我是这么认为的,因为我检查的时候页面上只有一帧
-
发布页面的html还是分享url?
-
是的,这真的很有帮助。
-
我已将页面相关部分的 html 添加到我的原始帖子中
标签: python selenium selenium-chromedriver webdriverwait selenium-firefoxdriver