Javascript将值输入到文本框中,而不是Python中的sendKeys()
我无法使用Javascript将值输入到文本框中,而不是Python中的sendKeys(),javascript,python,selenium,Javascript,Python,Selenium,我无法使用send_Keys()方法在我正在使用的当前网站中输入值。 所以我尝试使用javascript来输入值 在我决定使用javascript之前,我尝试了click()和clear()以及send_keys(),但令我失望的是,它没有起作用 我使用javascript代码在下面输入值 driver.execute_script("document.getElementById('CustCd').setAttribute('value', 'J590')") 它成功了 但是目前我的代码在
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-
您需要将变量作为变量而不是文字插入
value = 'J590'
driver.execute_script(f"document.getElementById('CustCd').setAttribute('value', '{value}')")
您需要将变量作为变量而不是文字插入
value = 'J590'
driver.execute_script(f"document.getElementById('CustCd').setAttribute('value', '{value}')")
首先,设置输入的当前值的正确方法是将
值指定给属性。输入当前值没有属性(输入的默认值是值属性)
其余部分是一个通用问题的特例:“如何将Python变量的值输出到JavaScript代码中?”
如果输出的字符串不包含引号或反斜杠,则可以使用格式字符串并以引号输出值。(JavaScript有两种引号,”
和“
;您只需转义您在值周围使用的引号即可。)但是,这些假设往往会失效;只要字符串是嗨,我是Joe
,这种方法就会失效
在一般情况下,为了确保正确转义和正确写入所有值,可以使用JSON:
导入json
值='J590'
执行脚本(f“document.getElementById('CustCd')。value={json.dumps(value)};”)
这将产生:
document.getElementById('CustCd').value=“J590”;
这样,您就不必担心引用和转义,因为有效的JSON就是有效的JavaScript(多亏了最近的JavaScript规范修复;在此之前,人们几乎从未遇到过边缘案例不兼容)
它还适用于数字,或者您可能希望传递给hte JavaScript代码的更复杂的内容。例如:
导入json
课堂示例:
foo=“”
巴=0
定义初始化(self、foo、bar):
self.foo=foo
self.bar=bar
value=Example(“我是一个带引号的字符串。”,42)
打印(f“const obj={json.dumps(value.\uu dict\uu)};”)
num=42
打印(f“const num={json.dumps(num)};”)
这将产生:
constobj={“foo”:“我是一个带引号的字符串。”,“bar”:42};
常数num=42;
obj
最终成为一个对象,因为初始值设定项是一个有效的JavaScript对象文本,其中包含来自Example
对象的数据。类似地,num
也是一个有效的JavaScript数字
首先,设置输入的当前值的正确方法是将值指定给属性。输入的当前值没有属性(“code>值”
属性是输入的默认值,)
其余部分是一个通用问题的特例:“如何将Python变量的值输出到JavaScript代码中?”
如果输出的字符串不包含引号或反斜杠,则可以使用格式字符串并以引号输出值。(JavaScript有两种引号,“
和”
;您只需转义在值周围使用的引号即可。)这些假设往往会失效,尽管;只要字符串是Hi,我是Joe
,该方法就会中断
在一般情况下,为了确保正确转义和正确写入所有值,可以使用JSON:
导入json
值='J590'
执行脚本(f“document.getElementById('CustCd')。value={json.dumps(value)};”)
这将产生:
document.getElementById('CustCd').value=“J590”;
这样,您就不必担心引用和转义,因为有效的JSON就是有效的JavaScript(多亏了最近的JavaScript规范修复;在此之前,人们几乎从未遇到过边缘案例不兼容)
对于数字,或者您可能希望传递给hte JavaScript代码的更复杂的事情,它也很有用。例如:
导入json
课堂示例:
foo=“”
巴=0
定义初始化(self、foo、bar):
self.foo=foo
self.bar=bar
value=Example(“我是一个带引号的字符串。”,42)
打印(f“const obj={json.dumps(value.\uu dict\uu)};”)
num=42
打印(f“const num={json.dumps(num)};”)
这将产生:
constobj={“foo”:“我是一个带引号的字符串。”,“bar”:42};
常数num=42;
obj
最终成为一个对象,因为初始值设定项是一个有效的JavaScript对象文本,包含来自示例
对象的数据。类似地,num
是一个有效的JavaScript数字
使用Javascript输入变量值可以使用以下解决方案:
ccr_No = XLUtlis.readData(path, 'ccr', r, 1)
# ccr_No = J590
driver.execute_script("document.getElementById('CCRNo').value='" + ccr_No + "';")
例如,要在Google主页的搜索框中输入变量值:
- 代码块:
driver.get("https://www.google.com/")
value = 'J590'
driver.execute_script("document.getElementsByName('q')[0].value='" + value + "';")
- 浏览器快照:
您可以在中找到相关的讨论
使用Javascript输入变量的值,可以使用以下解决方案:
ccr_No = XLUtlis.readData(path, 'ccr', r, 1)
# ccr_No = J590
driver.execute_script("document.getElementById('CCRNo').value='" + ccr_No + "';")
例如,输入值