Python Selenium:发送密钥太慢了

时间:2018-04-21 13:25:03

标签: python performance selenium key send

我使用element.send_keys("Anything")填写表单,但需要花费很多时间,而且脚本必须快速填写。

我尝试了不同的Chromedriver版本,但没有任何帮助。你知道为什么需要这么长时间吗?我怎样才能让它更快?

注意:我正在搜索xpath。如果我尝试搜索ID或名称,我会收到错误消息。我不知道这会更快。

3 个答案:

答案 0 :(得分:1)

您可以将 pyperclip 与 selenium 一起使用。将字符串复制到 pyperclip 剪贴板,粘贴到输入字段

    import pyperclip as pc
    from selenium.webdriver.common.keys import Keys
    pc.copy("Whatever text to paste")
    element.send_keys(Keys.CONTROL, 'v')  #Paste using Ctrl+V

答案 1 :(得分:0)

您可以使用Javascript输入文本框

((JavascriptExecutor) driver).executeScript("arguments[0].value = arguments[1];", driver_tmp.findElement(By.id("text_id")), text);

答案 2 :(得分:0)

我在python中遇到了同样的问题,尝试使用不同的浏览器尝试所有这些32位,64位内容,但是send_keys()花费了难以置信的长时间,感觉就像是一个脾气暴躁的老人在打字。 我发现使用Javascript和繁荣的解决方案产生了巨大的影响。这是使用Javascript的方法。

driver.execute_script('document.getElementById("content").value="My Dummy Text";')

位置:

Driver是使用以下类似命令创建的浏览器驱动程序:

driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_path)

execute_script是我们用来传递Javascript的函数

document.getElementByID是您的JS方法,在这种情况下,您将使用它来获取文本框/文本区域信息,因为我们使用的是getElementByID,因此您必须找到文本框的ID,在我的情况下, “内容”,请参见下面的参考:

<textarea class="wp-editor-area" style="height: 361px; margin-top: 37px;" autocomplete="off" cols="40" name="content" id="content" aria-hidden="false"></textarea>

请注意上述HTML textarea标记的ID参数。您可以使用Chrome开发者工具找到此信息,方法是右键单击并检查,然后复制元素,然后检查ID信息。 如果由于某种原因不存在ID,则可以对getElementBy *使用其他方法,例如“类”或“名称”或“ CSS”等。

有关更多信息,请参见此链接:https://www.w3schools.com/js/js_htmldom_elements.asp

最后,您将使用.value参数将内容放入该文本框。 在我们的例子中,我们将文本“ My Dummy Text”作为值传递给文本框,它的工作原理绝对不错。

希望这可以帮助希望在python中加快send_keys()的人

注意:此方法将替换文本区域中的所有现有文本,如果您想保留现有文本,则可以首先“获取”元素值,追加到字符串中,然后传递value方法,应该工作正常。