Javascript selenium:单击按钮后如何获取页面源代码

Javascript selenium:单击按钮后如何获取页面源代码,javascript,jquery,python,selenium,Javascript,Jquery,Python,Selenium,我正在使用selenium和python来测试我的web服务器。我需要的是在输入文本中填充文本,然后单击按钮将消息提交到我的服务器并打开一个新网页。 这是我的代码: from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("http://www.example.com") txt = driver.find_element_

我正在使用selenium和python来测试我的web服务器。我需要的是在输入文本中填充文本,然后单击按钮将消息提交到我的服务器并打开一个新网页。

这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://www.example.com")
txt = driver.find_element_by_id('input-text')
txt.clear()
txt.send_keys('some messages')
btn = driver.find_element_by_id('input-search')
btn.click()
# How to print the source code of the new page here?
# I think it should be as below but I don't know how to do it:
# driver.get("new link")   <---- How to get the new link?
# print(driver.page_source.encode('utf-8'))
从selenium导入webdriver
从selenium.webdriver.common.by导入
driver=webdriver.Chrome()
驱动程序。获取(“http://www.example.com")
txt=驱动程序。通过\u id(“输入文本”)查找\u元素\u
txt.clear()
txt.send_键('一些消息')
btn=驱动程序。通过\u id(“输入搜索”)查找\u元素\u
点击()
#如何在这里打印新页面的源代码?
#我认为应该如下,但我不知道怎么做:

#driver.get(“new link”)如果在新选项卡或窗口中加载新页面,则需要首先将selenium的上下文更改为此新窗口:

driver.switch\u到\u窗口(driver.window\u句柄[1])

下一步是等待新内容加载,然后您可以通过以下方式获取代码:


打印(driver.page\u source.encode('utf-8'))
您需要等待新页面加载。根据网页的构建方式,您可能需要等待元素出现,然后使用driver.page\u source将页面内容转储到变量中。或者,如果您不需要单击按钮来访问页面,您可以在页面加载完成后直接使用driver.get(url)并依靠它来完成。

在打印新网站源代码之前,您可以尝试几秒钟的延迟

time.sleep(2)
print(driver.page_source.encode('utf-8'))

这对我有效:D

我得到一个错误:
索引器:列表索引超出范围
。对不起,我误导了你。单击的动作不是打开另一个新页面,而是用新页面替换旧页面。在这种情况下,我觉得你的代码很好,也许你只需要等待新页面加载?哦。。。你是对的:D但是我认为
切换到\u窗口
对其他人帮助很大。所以我接受你的回答。如果你愿意的话,你可以重新编辑你的答案。嗨,除了时间还有别的方法吗。sleep()?谢谢