【问题标题】:selenium webdriver sendkeys() using python and firefox使用 python 和 firefox 的 selenium webdriver sendkeys()
【发布时间】:2013-01-11 22:32:37
【问题描述】:

我正在使用selenium 2.25.0firefox 3python 2.6.6。我正在尝试运行一个使用 sendkeys() 的 selenium 函数:

 Webdriver.find_element_by_name( 'j_username' ).clear()
 webdriver.find_element_by_name( 'j_username' ).send_keys( "username" )

此代码在我的机器上运行。但是从另一台机器上运行时,用户名字段会留空并继续执行脚本的其余部分(不报告任何错误)。

我可以看到在尝试发送用户名之前该字段已被清除,因此我知道查找按钮/按钮的名称没有问题。我尝试在清除字段和发送用户名之间暂停,但这似乎也不起作用。

我需要保持我的 firefox 和 selenium 版本相同,还有什么可以解决这个问题的吗?

【问题讨论】:

  • 我猜这个问题与相当旧的 Firefox 版本和较新的 Selenium 不能很好地配合使用有关。可以试试更新的 Firefox 吗?
  • 是的,你是对的。 Firefox 过时的原因是上传大文件。我已经更新到 Firefox 10 并设法解决了我的文件上传问题。现在似乎一切正常。

标签: python firefox selenium selenium-webdriver


【解决方案1】:

我的问题是相同的,我通过从 selenium==2.42.1 到 selenium==2.25.0 解决了它

更改我的 selenium 版本后,测试能够 send_keys() 并使用 send_keys(Key.ENTER) 提交表单

我目前正在使用 Iceweasel 3.5.16 在远程 Debian Squeeze 6.0.8 服务器上运行无窗口

Mozilla Iceweasel 3.5.16, Copyright (c) 1998 - 2010 mozilla.org

Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.8 (squeeze)
Release:        6.0.8
Codename:       squeeze

【讨论】:

    【解决方案2】:

    使用以下解决方法我认为它可能有效。

    driver = webdriver.Firefox()
    elem = driver.find_element_by_name('j_username')
    elem.clear()
    app = Application.Application()
    app.window_(title_re='*.Firefox.*').TypeKeys('username')
    

    最后两行是 Python(pyWinauto)

    【讨论】:

      【解决方案3】:

      您的代码看起来很奇怪。通常,您定位一个元素,然后对它执行操作……而不是每次都定位它。

      试试这样的:

      from selenium import webdriver
      
      driver = webdriver.Firefox()
      elem = driver.find_element_by_name('j_username')
      elem.clear()
      elem.send_keys('username')
      

      【讨论】:

      • 尝试了您的建议,但将字段留空仍然存在同样的问题。
      • Corey描述的方式是对的,但是需要导入Keys才能使用。我建议您查看文档而不是询问您可以想象的任何内容...在这里:selenium-python.readthedocs.org
      猜你喜欢
      • 1970-01-01
      • 2012-10-15
      • 2021-06-08
      • 2014-01-16
      • 2023-03-14
      • 2016-11-28
      • 2017-05-14
      • 2018-03-31
      • 1970-01-01
      相关资源
      最近更新 更多