Python Selenium不会将值保存到db

时间:2018-03-12 10:02:45

标签: python selenium selenium-chromedriver

我使用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="$(&quot;:ui-fancytree&quot;).fancytree(&quot;getNodeByKey&quot;, &quot;_3389&quot;).data.editedLang = this.value" style="width:100%;">top</textarea>

这里我需要调用onKeyup事件,以便添加内容:

driver.execute_script('arguments[0].value = arguments[1]', textarea_elem, i[col_count].value)

1 个答案:

答案 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)