Skip to main content
 首页 » 编程设计

python之Selenium Webdriver for Python : get page, 输入值,点击提交,获取源代码

2025年05月04日30www_RR

好吧,我很困惑。所以我想使用 Selenium Webdriver 和 Python 抓取一个页面。我在 Selenium IDE 中记录了一个测试用例。它有类似

的东西
Command    Taget 
click      link=14 

但我不知道如何在 Python 中运行它。理想的最终结果是我拥有最后一页的来源。

是否有 run_test_case 命令?还是我必须编写单独的命令行?我宁愿错过测试用例和实际自动化之间的联系。每个站点都告诉我如何加载初始页面以及如何从该页面获取内容,但我如何输入值并单击内容并获取源代码?

我见过:

submitButton=driver.find_element_by_xpath("....") 
submitButton.click() 

好的。并输入值?并在我提交页面后获取源代码?很抱歉,这太笼统了,但我真的环顾四周,没有找到一个好的教程来实际向我展示如何做我认为是 Selenium Webdriver 的全部要点。

请您参考如下方法:

我从未使用过 IDE。我只是手工编写测试或站点自动化。

from selenium import webdriver 
 
browser = webdriver.Firefox() 
browser.get("http://www.google.com") 
print browser.page_source 

你可以把它放在一个脚本中然后执行 python wd_script.py 或者你可以打开一个 Python shell 并手动输入它,观察浏览器打开,观察它被每行。为此,您显然还需要安装 Firefox。并非所有版本的 Firefox 都适用于所有版本的 Selenium。每个的当前最新版本(Firefox 19,Selenium 2.31)都可以。

显示登录表单的示例可能如下所示:

username_field = browser.find_element_by_css_selector("input[type=text]") 
username_field.send_keys("my_username") 
password_field = browser.find_element_by_css_selector("input[type=password]")  
password_field.send_keys("sekretz") 
browser.find_element_by_css_selector("input[type=submit]").click()  
print browser.page_source 

如果你对css很了解的话,这种东西写起来就容易多了。尝试查找在 JavaScript 中生成的元素可能会导致奇怪的错误。例如,您可能会在它们存在之前寻找它们。通过输入 time.sleep 一段时间并查看是否可以解决问题,很容易判断是否属于这种情况。更优雅的是,您可以抽象出某种通用的等待元素函数。

如果您想将 Webdriver session 作为集成测试套件的一部分运行,那么我建议使用 Python 的单元测试来创建它们。您将浏览器驱动到被测站点,并断言您正在执行的操作使页面处于您期望的状态。如果您有兴趣,我可以分享一些例子,说明它如何运作。