2015-03-30 68 views
1

這是我的代碼:屏幕硒刮8

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 

browser = webdriver.PhantomJS() 
browser.set_window_size(1120, 550) 
browser.get("http://www.jamiiforums.com/kenyan-news/225589-kenyan-and-tanzanian-surburbs.html") 

username = browser.find_element_by_id("navbar_username") 
password = browser.find_element_by_name("vb_login_password_hint") 

username.send_keys("user") 
password.send_keys("password") 

browser.find_element_by_class_name("loginbutton").click() 

wait = WebDriverWait(browser, 10) 
wait.until(EC.visibility_of_element_located((By.XPATH, '//h2[contains(., "Redirecting")]'))) 
wait.until(EC.title_contains('Kenyan & Tanzanian')) 


link = browser.find_element_by_xpath('//div[@class="vbseo_liked"]/a[contains(@onclick, "return vbseoui.others_click(this)")]') 
link.click() 
browser.save_screenshot('screenie.png') 
print 'success!!' 
browser.close() 

對於這個HTML代碼:

<div class="vbseo_liked"> 
<a href="http://www.jamiiforums.com/member.php?u=8355" rel="nofollow">Nyaralego</a> 
, 
<a href="http://www.jamiiforums.com/member.php?u=8870" rel="nofollow">Sikonge</a> 
, 
<a href="http://www.jamiiforums.com/member.php?u=8979" rel="nofollow">Ab-Titchaz</a> 
and 
<a onclick="return vbseoui.others_click(this)" href="http://www.jamiiforums.com/kenyan-news/225589-kenyan-and-tanzanian-surburbs.html#">11 others</a> 
like this. 
</div> 

我希望能夠點擊此鏈接:

<a onclick="return vbseoui.others_click(this)" href="http://www.jamiiforums.com/kenyan-news/225589-kenyan-and-tanzanian-surburbs.html#">11 others</a> 

然後在點擊頁面後截取頁面的截圖。當我運行代碼時,我一直得到這個錯誤。

selenium.common.exceptions.NoSuchElementException:消息:{ 「的errorMessage」: 「無法找到與類名元素 'vbseo_liked'」

回答

3

您需要等待帖子到列表負載作出前點擊:

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 

browser = webdriver.PhantomJS() 
browser.maximize_window() 
browser.get("http://www.jamiiforums.com/kenyan-news/225589-kenyan-and-tanzanian-surburbs.html") 

username = browser.find_element_by_id("navbar_username") 
password = browser.find_element_by_name("vb_login_password_hint") 

username.send_keys("username") 
password.send_keys("password") 

browser.find_element_by_class_name("loginbutton").click() 

wait = WebDriverWait(browser, 10) 
wait.until(EC.visibility_of_element_located((By.XPATH, '//h2[contains(., "Redirecting")]'))) 
wait.until(EC.title_contains('Kenyan & Tanzanian')) 
wait.until(EC.visibility_of_element_located((By.ID, 'postlist'))) 

link = browser.find_element_by_xpath('//div[@class="vbseo_liked"]/a[contains(@onclick, "return vbseoui.others_click(this)")]') 
link.click() 

browser.save_screenshot('screenie.png') 
print 'success!!' 
browser.close() 

注意,生成的截圖將(在磁盤上約39 MB)非常大。

+0

再次感謝您的回答。儘管如此,我仍然得到一個超時錯誤。 selenium.common.exceptions.TimeoutException: 它可能是因爲它永遠不會到那個頁面? – user3078335 2015-03-30 19:28:06

+0

@ user3078335嗯有趣,它適用於我雖然。你能用'30'代替'10'嗎? (真的需要花費一些時間才能加載'11 others'頁面) – alecxe 2015-03-30 19:29:11

+0

我之前嘗試過20次。讓我看看30是否有用。 – user3078335 2015-03-30 19:29:59