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 编号。
TA贡献1803条经验 获得超3个赞
您需要将变量插入为变量,而不是文字
value = 'J590'
driver.execute_script(f"document.getElementById('CustCd').setAttribute('value', '{value}')")
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 + "';")
浏览器快照:
添加回答
举报