2017-11-05 3 views
0

次のコードを使用して特定のテキストが表示されるまでスクロールしようとしていますが、次のコードでドライバが終了するとすぐにページに移動します。PythonのセレンでJSスクリプトをスクロールダウン

def scroll_wait(): 
    wait = WebDriverWait(driver, 10) 
    find_elem = None 
    scroll_from = 0 
    scroll_limit = 3000 
    while not find_elem: 
     sleep(2) 
     driver.execute_script("window.scrollTo(%d, %d);" % (scroll_from, scroll_from + scroll_limit)) 
     scroll_from += scroll_limit 
     try: 
      find_elem = wait.until(EC.presence_of_element_located((By.XPATH, "//h3[@class='uiHeaderTitle']"))) 

     except TimeoutException: 
      pass 
    driver.close() 
私も次 XPATHにしようとしているが、それだけでも、テキストの後にスクロールし続け

(By.XPATH, "//*[contains(text(), 'More About You')]") 

そして、これは私がにスクロールしようとしているテキストのHTMLコードです。セレンについては

<h3 class="uiHeaderTitle">More About You</h3> 
+0

Seleniumの場合、テストする良い方法の1つは、必要なものだけを含むプレーンなHTMLページ(たとえばh3)を作成し、シナリオを模倣することです。私はあなたの問題を本当に知っていませんが、 'presence_of_element_located'がDOMにあればtrueを返します。つまり、それが必要ではないことを意味します。これがすぐに終了する理由かもしれません。 'visibility_of_element_located' – AngYC

+0

@AngYCに変更してみてください。本当にうまく動作します。回答を投稿して受け入れることもできます。 –

答えて

1

、テストへの1つの良い方法は、(例えば、H3)のみあなたが望む含むプレーンHTMLページを作成し、シナリオを模倣しています。私はあなたの問題を本当に知っていませんが、DOM内にあればpresence_of_element_locatedが真を返すことを試みることができます。つまり、それは必要ではありません。これはすぐに終了する理由かもしれません。試してみてくださいvisibility_of_element_located

関連する問題