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

时间:2017-06-21 07:05:37

标签: 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_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'))

当我执行上面的python代码时,一切正常:

  

www.example.com已打开。
some messages已填写   输入文本。
点击按钮输入搜索。
新的网络   页面已打开。

现在我需要打印新网页的页面源代码,点击按钮即可打开,但我不知道怎么做。

print(driver.page_source.encode('utf-8'))只是给了我www.example.com的源代码,而不是新的网页。

3 个答案:

答案 0 :(得分:1)

如果在新标签页或窗口中加载新页面,则需要先将selenium的上下文更改为此新窗口:

driver.switch_to_window(driver.window_handles[1])

下一步是等到加载新内容,然后您可以使用以下代码获取代码:

print(driver.page_source.encode('utf-8'))

答案 1 :(得分:0)

您需要等待新页面加载。根据网页的构建方式,您可能必须等待元素出现,然后使用driver.page_source将页面内容转储到变量中。或者,如果您不需要单击按钮来访问该页面,您可以只是driver.get(url)并在页面完成加载后依赖它来完成。

答案 2 :(得分:0)

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

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

这对我有用:D