Javascript 使用JS设置属性值,在每个值设置后清除

Javascript 使用JS设置属性值,在每个值设置后清除,javascript,python,jquery,selenium,selenium-webdriver,Javascript,Python,Jquery,Selenium,Selenium Webdriver,鉴于: 假设要键入的给定字符串是“asd” 它先键入“a”,然后删除它和类型“s”,然后删除“s”和类型“d”,并在执行另一个操作时删除(键入到另一个字段或单击另一个元素) HTML元素示例: for i in list('{}'.format(value)): self.browser.execute_script( "arguments[0

鉴于:

假设要键入的给定字符串是“asd” 它先键入“a”,然后删除它和类型“s”,然后删除“s”和类型“d”,并在执行另一个操作时删除(键入到另一个字段或单击另一个元素)

HTML元素示例:

                    for i in list('{}'.format(value)):
                        self.browser.execute_script(
                            "arguments[0].setAttribute('value', '{}');".format(i.replace('\n', '')),
                            self.browser.find_element_by_xpath("{}".format(xpath)))

另外,即使不使用for循环,并且值直接传递给js脚本,也会执行相同的清除操作


编辑:元素选择器必须通过xpath设置。

这里有一个经过测试的解决方案,用于在JS中使用xpath设置值
PS:我正在使用webdriver\u管理器来管理浏览器

<input type="text" class="validate-input input-error" placeholder="Introdu TOKEN" value="">

你能分享更多关于你想做什么的细节吗?如果你想用xpath设置一个值,你可以使用sendKeys方法。我想要一个sendKeys的替代方法,使用javascript,它更健壮,sendKeys对我来说不是常数。这确实有效,但网站似乎没有检测到任何键入操作,因此dosen;例如,t启用登录按钮,而在您的情况下,它不是必需的。但这就是我想要的,基本上,做得很好
def setValueByXpath(xpahtValue, inputValue):
    string = "document.evaluate('" + xpahtValue + "', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value = '" + inputValue + "'"
    driver.execute_script(string)

if __name__ == '__main__':
    driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get('https://www.google.com')

// call the above method with desierd xpath and value for it
    setValueByXpath('//*[@name="q"]', 'Paint Drying')

//I'm doing a search by pressing the enter button
    driver.find_element_by_xpath('//*[@name="q"]').send_keys(Keys.RETURN) 
    time.sleep(5)

    driver.quit()