2016-03-21 8 views
1
try: 
    next_page_elem = self.browser.find_element_by_xpath("//a[text()='%d']" % pageno) 

except noSuchElementException: 
    break 
print('page ', pageno) 
next_page_elem.click() 
sleep(10) 

ページには、フレーム内のレポートに関する情報が含まれています。私はスリープメソッドを使用して次のページがロードされるのを待つためにそれを使用し、それがなければページ1の情報を得続けました。睡眠の横にはセレンでこれを行う方が良いです。私は似ているいくつかの以前の投稿を試してみましたが、私が持っているHTMLはかなり独特のものであると思います。 Selenium Python: how to wait until the page is loaded?私は大変に感謝します。私は、これは基本的に、我々は現在であるかのページ意味を理解し何からページをPython Seleniumでロードする方法

<a class="on" href="javascript:void(0)">1</a> 

:ありがとう

<html> 
     <div class="z-page-block-right" style="width:60%;"> 
     <ul class="pageingclass"> 
     <li/> 
     <li> 
     <a class="on" href="javascript:void(0)">1</a> 
     </li> 
     <li> 
     <a onclick=" gotoPage('2','2')" href="javascript:void(0)">2</a> 
     </li> 
     <li> 
     <a class=" next " onclick=" gotoPage('2','2')" href="javascript:void(0)"/> 
     </li> 
     </ul> 
     </div> 
    </html> 
+0

ページ間を移動するとページURLが変更されますか?はいの場合、これらのURLを指定できますか?ありがとう。 – alecxe

+0

残念ながら、それは変更されません。 –

+0

ページ間を移動するときに変わる変数は何ですか?ページのタイトルまたはその他の要素ですか? – Rilwan

答えて

4

は、この要素を参照してください。

私たちは事前にページ番号を知っているので、現在のページ番号を持つ要素が存在するようになるまで、アイデアはwaitに次のようになります。

//a[@class = 'on' and . = '%d']a要素(複数可)をマッチするXPath式です
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

wait = WebDriverWait(driver, 10) 
try: 
    next_page_elem = self.browser.find_element_by_xpath("//a[text()='%d']" % pageno) 

except noSuchElementException: 
    break 
print('page ', pageno) 
next_page_elem.click() 

# wait for the page to load 
wait.until(
    EC.presence_of_element_located((By.XPATH, "//a[@class = 'on' and . = '%d']" % pageno)) 
) 

class="on"と、文字列の書式設定を使用して式に貼り付けるページ番号に等しいテキストがあります。

+0

現在のページが1ページにあります。 –

+0

あなたは伝説です。あなたはコードが働いています。何がクラスであるのかを説明してください。 "// a [@class = 'on'と。= '%d']"もう一度感謝します。 –

+0

@RicardLe答えを更新し、いくつかの説明が含まれています。また、トピックを解決するために回答が受け入れられたとマークできるかどうかを確認してください。ありがとう! – alecxe

関連する問題