我正在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)
这种替代方法不起作用。
答案 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方法,应该工作正常。