2016-12-07 2 views
1

iensと呼ばれるウェブサイト上の別のページを移動しようとしています。私はセレニウム+ pythonを使って "volgende"(オランダ語では "next"を意味します)をクリックしていますが、私のプログラムでwhileループを使ってページがなくなるまで次へクリックしてください。この場合、私のプログラムは23ページで終了します。今すぐ、私は2ページ目に行きます。クッキーのポップアップメッセージを閉じ、閉じて「Volgende」ボタンをクリックするまで待ってください。Python + Seleniumを使用してwhileループで次のページをクリックする

私のコードは次のようになります。

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

chrome_path = '/Users/user/Downloads/chromedriver' 
driver = webdriver.Chrome(chrome_path) 
driver.get('https://www.iens.nl/restaurant+utrecht') 

#wait for cookie message 
close_icon = WebDriverWait(driver, 5, 
0.25).until(EC.visibility_of_element_located([By.CSS_SELECTOR, 
'.cookiePolicy-close'])) 

close_icon.click() 

#wait for cookie message to disappear 
WebDriverWait(driver, 5, 
0.25).until(EC.invisibility_of_element_located([By.CSS_SELECTOR, 
'.cookiePolicy-close'])) 

click_icon = WebDriverWait(driver, 5, 
0.25).until(EC.visibility_of_element_located([By.LINK_TEXT, 
'Volgende'])) 
click_icon.click() 

ウェブサイトは事前にhttps://www.iens.nl/restaurant+utrecht

おかげと呼ばれています!

答えて

2

次のページに切り替えるたびに自動スクロールするため、webdriverNextボタンをクリックしようとしますが、他の要素がクリックを受け取ります。

while True: 
    try: 
     click_icon = WebDriverWait(driver, 5, 0.25).until(EC.visibility_of_element_located([By.LINK_TEXT, 'Volgende'])) 
     click_icon.click() 
     WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'main:not([style*="margin-top"])'))) 
    except: 
     break 

別の簡単な解決策は、(あなたの目標は最後のページに到達する場合のみ)Nextをクリックせずに、最後のページを取得することですすべての時間:

driver.find_elements_by_xpath('//div[@class="pagination"]/ul/li/a')[-2].click() 
をあなたはこのソリューションを使用することができます
関連する問題