Bazı testleri Selenium'dan WebDriver'a taşıyorum. Benim sorunum selenium.wait_for_condition için bir eşdeğer bulamıyorum. Python bağlamaları şu anda var mı, yoksa hala planlanıyor mu?selenium.wait_for_condition eşdeğeri
cevap
Şu anda WebDriver ile wait_for_condition kullanmak mümkün değil. Python selenium kodu, eski selenyum yöntemlerine erişmek için DrivenSelenium sınıfı sağlar, ancak wait_for_condition yapamaz. The selenium wiki has some info on that.
En iyi seçiminiz WebDriverWait sınıfını kullanmaktır. Bu, periyodik olarak True değerini döndürmesini bekleyen bir işlevi yürüten yardımcı bir sınıftır. Benim genel kullanım ideal olduğu hiçbir Bu çözümdür
driver = webdriver.Firefox()
driver.get('http://example.com')
add = driver.find_element_by_id("ajax_button")
add.click()
source = driver.page_source
def compare_source(driver):
try:
return source != driver.page_source
except WebDriverException:
pass
WebDriverWait(driver, 5).until(compare_source)
# and now do some assertions
olduğunu .. deneme/sayfa istek/yanıt döngüsü bazı ajax etkinlik tamamlamak için bekleyen gecikir durumlar için gereklidir hariç. Compare_source'ın istek/yanıt döngüsünün ortasında çağrılması durumunda, bir WebDriverException atar.
test coverage for WebDriverWait da bakmak için yararlıdır. döner, sonra
def click_n_wait(driver, button, timeout=5):
source = driver.page_source
button.click()
def compare_source(driver):
try:
return source != driver.page_source
except WebDriverException:
pass
WebDriverWait(driver, timeout).until(compare_source)
O düğmesini tıkladığında değiştirmek için DOM bekler ve:
Java ciltleme bir Bekleme sınıfı içerir. Bu sınıf, bir zaman aşımına ulaşılana kadar bir koşulu (bir arada uyur) tekrar tekrar kontrol eder. Normal API'yi kullanarak Javascript'inizin tamamlandığını tespit ederseniz, aynı yaklaşımı uygulayabilirsiniz.
İşte bir fonksiyonu koymak Greg Sadetsky cevabı benim sürümü, bu.
Görünürlüğü test edebilirsiniz gibi görünüyor. selenium.webdriver.support dosyasından, import_conditions öğesini ec 0 ve sonra ec ec.visibility_of (elm) 'olarak aktarın. Bunun geri dönüş nesnesi "selenium.webdriver.support.expected_conditions.visibility_of" şeklindedir, ancak bunun görünürlüğünü nasıl alacağımı anlayamadım. – huggie