所以最近尝试在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会超时。我的代码有问题还是可以改进?理想情况下,我希望它们尽可能健壮并避免超时。谢谢!
答案 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
。
希望有所帮助。