为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 将值输入文本框而不是 Python 中的 sendKeys()

Javascript 将值输入文本框而不是 Python 中的 sendKeys()

至尊宝的传说 2022-05-24 14:56:37
我不能使用send_Keys()方法在我正在处理的当前网站中输入值。所以我试图使用 javascript 来输入值。在我决定使用 javascript 之前,我尝试过,click()但令我失望的是,它没有用。clear()send_keys()我使用 javascript 代码在下面输入值driver.execute_script("document.getElementById('CustCd').setAttribute('value', 'J590')")它奏效了。但是目前我的代码在一个循环中并且值发生了变化,我该如何替换J590为获取值的变量?这是我尝试过的代码ccr_No = XLUtlis.readData(path, 'ccr', r, 1)driver.execute_script("document.getElementById('CCRNo').value=ccr_No")我知道它错了,任何帮助将不胜感激。我的 Javascript 很弱。如果有人能够解决我的send_keys()错误,请注意一些旁白。该函数只接受我发送的第一个字符。例如,send_keys("J590")给予J,send_keys("J590-TE21")给予J-
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

首先,设置输入当前值的正确方法是赋值给value属性。输入当前值没有属性(该value属性是输入的默认值,更多信息在此处)。


剩下的是一个通用问题的特例:“如何将 Python 变量的值输出到 JavaScript 代码中?”


如果您输出的字符串不包含引号或反斜杠,您可能会使用格式字符串并在Guy 显示的引号中输出值。(JavaScript 有两种引号,'和"; 你只需要转义你在值周围使用的那种。)但是,这些假设往往会失败;只要字符串是Hi, I'm Joe该方法中断。


在一般情况下,为了确保正确转义并正确写入所有值,您可以使用 JSON:


import json

value = 'J590'

driver.execute_script(f"document.getElementById('CustCd').value = {json.dumps(value)};")

输出:


document.getElementById('CustCd').value = "J590";

现场示例


这样,您不必担心引用和转义,因为有效的 JSON 是有效的 JavaScript,所以一切都为您处理(感谢最近的 JavaScript 规范修复;在此之前,存在人们几乎从未遇到过的边缘情况不兼容)。


它对于数字或您可能希望传递给 hte JavaScript 代码的更复杂的东西也很有用。例如:


import json


class Example:

    foo = ""

    bar = 0


    def __init__(self, foo, bar):

        self.foo = foo

        self.bar = bar


value = Example("I'm a string with \"quotes\" in it.", 42)

print(f"const obj = {json.dumps(value.__dict__)};")

num = 42

print(f"const num = {json.dumps(num)};")

输出:


const obj = {"foo": "I'm a string with \"quotes\" in it.", "bar": 42};

const num = 42;

obj最终成为一个对象,因为初始化程序是一个有效的 JavaScript 对象字面量,其中包含来自该Example对象的数据。同样,num是一个有效的 JavaScript 编号。


查看完整回答
反对 回复 2022-05-24
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您需要将变量插入为变量,而不是文字


value = 'J590'

driver.execute_script(f"document.getElementById('CustCd').setAttribute('value', '{value}')")


查看完整回答
反对 回复 2022-05-24
?
月关宝盒

TA贡献1772条经验 获得超5个赞

使用Javascript输入变量的值,您可以使用以下解决方案:


ccr_No = XLUtlis.readData(path, 'ccr', r, 1)

# ccr_No = J590

driver.execute_script("document.getElementById('CCRNo').value='" + ccr_No + "';")

例如,在Google Home Page的搜索框中输入变量的值:


代码块:


driver.get("https://www.google.com/")

value = 'J590'

driver.execute_script("document.getElementsByName('q')[0].value='" + value + "';")

浏览器快照:

//img1.sycdn.imooc.com//628c81d400015f3313620760.jpg

查看完整回答
反对 回复 2022-05-24
  • 3 回答
  • 0 关注
  • 305 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信