send_keys硒的速度很慢蟒蛇

时间:2018-08-16 03:35:51

标签: python selenium webdriver selenium-chromedriver ui-automation

我正在Windows 10上使用chrome 32位。Selenium send_keys()的键入速度较慢。对于较长的字符串,它的线性时间最差。请建议我如何加快send_keys()的键入速度,或建议我另一种方法在文本部分中键入文本。

txt_box=driver.find_element(By.XPATH  , '//*[@id="main"]/footer/div[1]/div[2]/div/div[2]')
my_string="john"
driver.execute_script("arguments[0].setAttribute('value', '" + my_string +"')", txt_box)

这种替代方法不起作用。

2 个答案:

答案 0 :(得分:0)

就我而言,我在PC上使用的是64位OS体系结构-据我所知,是因为Selenium在32位和64位模式之间进行切换(这是非常慢的操作)。仅32位支持ChromeDriver。我也有与IE驱动程序相同的问题。

即使在Chromedriver issue中被确认

  
    

是的,Chromedriver可在64位Windows上运行,并且可以成功地针对64位Chrome。

  

我建议您从Download page检查驱动程序与浏览器对的兼容性。如果您还可以,请同时尝试上/下两个版本(它们相互重叠)。

答案 1 :(得分: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方法,应该工作正常。