我使用selenium填充一个巨大的翻译表单,因此有人不必从CSV文件中复制粘贴几千行。 (这个任务需要用selenium完成,因为拥有源代码的原始程序员不能使用atm。)
该脚本完美无缺,并使用所需文本填充所有textareas。必须要做的最后一件事是点击保存。单击有效,但没有任何值保存到数据库。
我之前使用过se来完成这些任务,它总能奏效。使用自动化测试软件 chrome 会出现问题吗?
手动填充字段并单击“保存”可以正常工作并保留值。
我从未遇到过硒的这种行为,有人确实有想法吗?
我不认为这是代码的问题,因为没有错误+我看到字段已正确填充,但这是我如何填充textarea字段:
for i in worksheet:
if i[col_count].column == DATEI_UEBERSETZUNG_SPALTE:
if i[0].value != "Counter":
try:
elem = driver.find_element_by_xpath("//td[.='%s']" % i[0].value)
textarea_elem = elem.find_element_by_xpath('(..//textarea)[2]')
if i[col_count].value:
textarea_elem.clear()
driver.execute_script('arguments[0].value = arguments[1]', textarea_elem, i[col_count].value)
else:
print (DATEI, i[0].value, "nicht übersetzt")
except Exception as e:
print (DATEI, i[0].value, "Spalte konnte nicht auf der Webseite gefunden werden")
加载硒:
chromedriver = "drivers/chromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
问题:
通过将此内容添加到数组onKeyup
来提交textarea内容。
这意味着我需要在填充textarea之后再调用一个onKeyup。
<textarea onkeyup="$(":ui-fancytree").fancytree("getNodeByKey", "_3389").data.editedLang = this.value" style="width:100%;">top</textarea>
这里我需要调用onKeyup事件,以便添加内容:
driver.execute_script('arguments[0].value = arguments[1]', textarea_elem, i[col_count].value)
答案 0 :(得分:0)
这里的问题非常独特。要从textarea获取新值,需要onKeyup
事件,该事件填充了一个数组。该数组的内容用于提交。
我只需添加一个随机键事件,以便将由selenium填充的值添加到数组中。
我在填充textarea元素后添加了此键事件:
driver.execute_script('arguments[0].value = arguments[1]', textarea_elem, i[col_count].value)
textarea_elem.send_keys(Keys.DOWN)