【问题标题】:Clearing cookies after opening a browser打开浏览器后清除 cookie
【发布时间】:2016-06-02 17:59:23
【问题描述】:

我遇到了一个问题,大约 50% 的时间我运行我的 python selenium 脚本,仅在第一个文本框中,它已经在输入中显示了文本(我相信是因为 cookie)。这意味着当我使用.send_keys() 输入文本时,文本变为无效,因为我有两段文本,因此找不到目的地。

假设发生的是,在输入文本后,它的项目出现在下面的下拉列表中,然后脚本会选择该项目。但是如果文本不正确,那么显然列表中没有可供选择的项目。

我想在输入文本之前尝试使用.clear() 清除文本框,但下拉列表没有出现(这很奇怪)。

所以我的问题是,有没有办法确保每次打开浏览器并运行脚本时文本框始终为空?

以下是检索文本字段、清除它然后输入文本的小示例(该解决方法不起作用)。

depart_from = driver.find_element_by_id("departure-airport-input")
depart_from.clear()
depart_from.send_keys("Leeds Bradford")

【问题讨论】:

  • 如果您的发送键没有填充下拉菜单,那么您的 onchange 事件可能没有触发..请同时提供触发下拉菜单的 DOM JAVASCRIPT 事件..
  • @sunderkandasamy 我更新了我的问题以包含 html 代码以及我用来尝试选择它的点击事件
  • 也许考虑使用浏览器的键盘快捷键来实现您的目标?例如,在 Firefox 中,您可以发送“Ctrl+A”以突出显示所有文本,一旦您将注意力集中在文本框元素上,然后发送“Del”,然后输入您想要的文本。
  • 找到与ui-autocomplete关联的JAVASCRIPT类,自己调用

标签: python python-2.7 selenium selenium-webdriver


【解决方案1】:

我知道在 Java 中就是这样......也许它会给你一些线索?

driver.manage().deleteAllCookies();

【讨论】:

    【解决方案2】:

    预先选择输入中的所有文本,然后输入您的:

    from selenium.webdriver.common.keys import Keys
    
    depart_from = driver.find_element_by_id("departure-airport-input")
    depart_from.send_keys(Keys.CONTROL, 'a')  # Keys.COMMAND on Mac
    depart_from.send_keys("Leeds Bradford")
    

    如果您想在发送密钥之前检查输入的文本,请使用get_attribute():

    initial_value = depart_from.get_attribute("value")
    if initial_value == FROM:
       # do smth
    

    【讨论】:

    • 这个小虫子让我很烦。现在它没有单击列表中的项目。如果浏览器打开并且未显示文本,它会在您的答案中执行上述操作(我们无法看到,因为没有要删除的文本)并从列表中选择目标。但是,如果在浏览器打开时确实出现了文本,您可以看到它按照您的说明进行操作,但它不会单击列表中的项目
    • 我唯一能想到的就是输入文本并在 if 语句中声明如果文本框不等于 FROM,则删除整个文本并再次输入 FROM。 python中不等于怎么办?
    • @BruceyBandit 等等,如果你在发送 ctrl+a 之前尝试点击输入怎么办? depart_from.click()?
    • @BruceyBandit 更新了如何获取输入值。
    • 谢谢,仍然没有运气,即使点击了您所说的。它只是不想在清除现有文本并再次输入后选择该项目。您在终端测试时从未遇到过这个问题吗?
    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2010-12-19
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多