【问题标题】:Python selenium- Clicking a javascript link doesn't load the new page but shows the urlPython selenium - 单击 javascript 链接不会加载新页面,但会显示 url
【发布时间】:2015-11-28 19:07:28
【问题描述】:

我对 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. 获取该页面的 html 源代码

我尝试了什么:我尝试使用 selenium 单击按钮,即使 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 个大学学分,因此我的项目严重落后!

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

    • 非常感谢您。我不敢相信我没有注意到所有@src 都具有相同的价值。我觉得我好笨。另外,你会说等待“直到 visibility_of_element_located”总是比“implicitly_wait”更可取吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2017-11-29
    • 2017-05-08
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多