【问题标题】:How can you input text into an input element without using send keys in Python Selenium?如何在不使用 Python Selenium 中的发送键的情况下将文本输入到输入元素中?
【发布时间】:2022-12-14 03:49:57
【问题描述】:

我正在使用 send_keys 有时有效有时无效的网站(我不知道为什么)。有时它会发送密钥,然后我在几个小时后尝试,但它不再起作用了。我想知道是否有人知道在不使用 send_keys 的情况下将文本/数字发送到输入元素的方法。

例如,是否可以在不使用 send_keys 的情况下将文本输入到以下元素中:

<input _ngcontent-coh-c546="" type="text" name="tag" maxlength="25" placeholder="Tags" class="ng-dirty ng-valid ng-touched">

任何帮助将不胜感激。谢谢你。

【问题讨论】:

  • 请在您的问题中添加更多详细信息,例如您的 python 脚本。
  • 你有没有试过pyautogui pypi.org/project/PyAutoGUI
  • 如果不使用 send_keys,您可能无法输入任何内容
  • 我找到了一篇为此目的使用 JavaScript 的文章。 Click here
  • 我可以使用 driver.execute_script() 用 Python 编写。

标签: python selenium selenium-webdriver


【解决方案1】:

与 send_key 相比,这应该有效且更快地工作

from selenium import webdriver

driver = webdriver.Chrome('chromedriver')
driver.get("http://www.google.com");
driver.execute_script("document.getElementsByName('q')[0].value='What ever you want to be typed here'")

【讨论】:

  • 非常感谢,这完美无缺。
【解决方案2】:

我也有类似的要求,但是我想传递的文本是冗长的字符串,我实现如下:

解决方案 1:

def enter_text_js(自我,数据): self.driver.execute_script("document.getElementsByClassName('ck-tag')[0].value='"

  • 数据+“'”) self.driver.execute_script("document.getElementsByClassName('ck-tag')[0].value='"
  • 数据+“';”) self.driver.execute_script("document.getElementsByClassName('ck-tag')[0].value='data'")

以上行均无效,文本框为空。在开发控制台中,尽管“document.getElementsByClassName('ck-tag')[0]”返回正确的元素。

解决方案 2:

    xpath = '//div[@aria-label="Rich Text Editor, main"]//p'
    element = self.driver.find_element(By.XPATH, xpath)
    element.send_keys("Hello")
    # Above line works
    self.driver.execute_script('arguments[0].value=" ' + data + ' " ;', element)
    # This line fails and does not enter any text.

知道如何解决这个问题吗?

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2022-08-08
    • 1970-01-01
    相关资源
    最近更新 更多