我使用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
的源代码,而不是新的网页。
答案 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