2015-11-28 13 views
2

我對Python非常陌生,並且第一次使用硒。 我需要什麼:Python selenium-點擊一個JavaScript鏈接不會加載新頁面,但會顯示網址

  1. 開放http://www.kegg.jp/kegg-bin/get_htext?ban00001.keg
  2. 點擊四號向下的箭頭上方the one next to the check-box named "one-click mode"
  3. 得到的HTML源爲網頁

什麼我想:我試着點擊該按鈕使用硒並重新加載了相同的頁面,即使URL顯示了下一頁。 我的代碼:

driver.get("http//www.kegg.jp/kegg-bin/get_htext?ban00001.keg") 
mouse = webdriver.ActionChains(driver)     elem=driver.find_element_by_xpath("//img[@src='/Fig/get_htext/open.png']") 
mouse.move_to_element(elem) 
driver.implicitly_wait("5") 
mouse.click().perform() 

我也試圖避免點擊和直接填寫表格的按鈕提交,但似乎我填補了錯誤的XPath,因爲它無法找到的元素。

elem=driver.find_element_by_xpath("/body/form/input[@name='htext']").send_keys('ban00001.keg') 

有人可以告訴我爲什麼點擊不起作用,我的xpath怎麼是錯的?但主要是,我怎樣才能實現打開頁面的目標。請幫忙。這是值得10大學學分,我非常支持我的項目,因爲這個!

回答

1

首先,有4個幾乎相同的箭頭。由於需要4一個,我會使用alt屬性來區分箭頭:

driver.find_element_by_xpath("//img[@alt='4th Level']") 

當您單擊箭頭,是需要時間的頁面加載 - 你需要等待。我等待主頁面網格通過visibility_of_element_located預期條件變得可見。

完整的工作代碼:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions 
from selenium.webdriver.support.wait import WebDriverWait 


driver = webdriver.Chrome() 
driver.get("http://www.kegg.jp/kegg-bin/get_htext?ban00001.keg")  

# locating the 4th arrow 
arrow4 = driver.find_element_by_xpath("//img[@alt='4th Level']") 
arrow4.click() 

# wait for the grid to become visible 
wait = WebDriverWait(driver, 10) 
wait.until(expected_conditions.visibility_of_element_located((By.ID, "grid"))) 

print(driver.page_source) 

driver.quit() 
+1

非常感謝你這一點。我不能相信我沒有注意到所有的@src都具有相同的值。我覺得我好笨。另外,你會說等到「visibility_of_element_located」總是比「implicitly_wait」更好嗎? –

相關問題