Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python selenium—单击javascript链接不会';t加载新页面,但显示url_Javascript_Python_Python 3.x_Selenium_Xpath - Fatal编程技术网

Python selenium—单击javascript链接不会';t加载新页面,但显示url

Python selenium—单击javascript链接不会';t加载新页面,但显示url,javascript,python,python-3.x,selenium,xpath,Javascript,Python,Python 3.x,Selenium,Xpath,我对Python非常陌生,第一次使用selenium。 我需要的是: 打开 单击顶部的第四个向下箭头 获取该页面的html源代码 我尝试的内容:我尝试使用selenium单击按钮,它重新加载了相同的页面,即使url显示了下一页。 我的代码: 我还试图避免单击并直接填充按钮提交的表单,但似乎我填充了错误的xpath,因为它找不到元素 elem=driver.find_element_by_xpath("/body/form/input[@name='htext']").send_keys('ban

我对Python非常陌生,第一次使用selenium。 我需要的是:

  • 打开
  • 单击顶部的第四个向下箭头
  • 获取该页面的html源代码
  • 我尝试的内容:我尝试使用selenium单击按钮,它重新加载了相同的页面,即使url显示了下一页。 我的代码:

    我还试图避免单击并直接填充按钮提交的表单,但似乎我填充了错误的xpath,因为它找不到元素

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

    有人能告诉我为什么点击不起作用,我的xpath是怎么错的吗?但主要是,我如何才能实现打开页面的目标。请帮忙。这相当于10个大学学分,因此我的项目严重落后

    首先,有4个几乎相同的箭头。由于您需要第四个,我将使用
    alt
    属性来区分箭头:

    driver.find_element_by_xpath("//img[@alt='4th Level']")
    
    当您单击箭头时,页面加载需要时间-您需要等待。我会等待主页网格通过位于预期条件下的元素的可见性变得可见

    完整的工作代码:

    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都有相同的值。我觉得自己很愚蠢。另外,您会说“直到元素的可见性”总是比“隐式地”更可取吗?
    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()