Python selenium-单击javascript链接不会加载新页面但会显示网址

时间:2015-11-28 19:07:28

标签: javascript python python-3.x selenium xpath

我是Python的新手并且是第一次使用selenium。 我需要的是:

  1. 打开http://www.kegg.jp/kegg-bin/get_htext?ban00001.keg
  2. 点击顶部the one next to the check-box named "one-click mode"
  3. 的第4个向下箭头
  4. 获取该页面的html源代码
  5. 我尝试了什么:我尝试使用selenium单击按钮,即使网址显示下一页,它也会重新加载相同的页面。 我的代码:

    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 个答案:

答案 0 :(得分: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()