不确定是什么导致硒超时

时间:2014-06-23 18:10:55

标签: python selenium saucelabs

所以最近尝试在python中创建一个套件,以便在某些Twitter共享按钮上运行测试。我使用了" switch_to_frame"用于导航到iframe并选择按钮的功能。这是我的代码

class EntertainmentSocialMedia(CoreTest):
    def testEntertainmentTwitter(self):
        d = self.driver
        d.get(config.host_url + '/testurl')
        social_text = 'Follow @twitterhandle'
        print "Locating Entertainment vertical social share button"
        time.sleep(3)
        d.switch_to_frame(d.find_element_by_css_selector('#twitter-widget-0'))
        social_button = d.find_element_by_xpath('//*[@id="l"]').text
        self.assertTrue(str(social_text) in str(social_button))
        print social_button
        d.close()

我担心的是,在套件中进行多次测试时,有时候selenium会超时。我的代码有问题还是可以改进?理想情况下,我希望它们尽可能健壮并避免超时。谢谢!

1 个答案:

答案 0 :(得分:1)

明确更好wait for the frame

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

...

d.get(config.host_url + '/testurl')

frame = WebDriverWait(d, 10).until(
    EC.presence_of_element_located((By.ID, "twitter-widget-0"))
)
d.switch_to_frame(frame)

这将等待最多10秒然后抛出TimeoutException。默认情况下,它会每隔500毫秒检查一次frame

希望有所帮助。