kxf0211 发表于 2021-5-20 17:28

怎样把python变量传递到javascript语句中起作用呢?

最近在用Python写一个Selenium的项目

主程序是python语言
python变量:
title = "ABCDEFG"


但是因为中间需要用到改变html里面元素的text属性,所以使用了js语句帮忙
element = wd.find_element_by_xpath('//*[@id="tinymce"]/p/span')

wd.execute_script('arguments.innerText = (title)', element)
显然excute_script这样直接引用python变量是错误的。
python的变量 title在js语句里没法用。


请教各位大神如何解决?

fanvalen 发表于 2021-5-20 18:14

python 里模拟js 只需要将变量作为参数传过去

我相信肯定有地方调用js方法才运行js代码

我爱你H大 发表于 2021-5-20 18:27

'arguments.innerText ={}'.format(title),

abigmiu 发表于 2021-5-20 19:18

字符串拼接呀

无敌小王 发表于 2021-5-20 21:25

js = 'arguments.innerText = ('+title+')'
wd.execute_script(js, element)

冥界3大法王 发表于 2021-5-20 22:46

还是delphi好啊,左手拈着python,右手拈着js
组件传参就是方便啊。

ReLoading 发表于 2021-5-21 00:35

字符串拼接传参,例如:
#4.通过javascript设置浏览器窗口的滚动条位置
x=100
y=450
js="window.scrollTo({},{});".format(x,y)
driver.execute_script(js)

kxf0211 发表于 2021-5-21 19:11

谢谢!非常感谢各位大神鼎力相助{:1_893:}{:1_893:}

kxf0211 发表于 2021-6-4 10:55

已解决:

参照了楼上几位提点的方法,之前试了几种都没成功(理论上行得通呀...)
后来发现是格式的问题 (wd.execute_script(arguments.innerText = 'ABCDEFG', element))#(之前没注意漏了引号)
已经完美解决问题:

title = "ABCDEFG"
js = f"arguments.innerText = '{title}'"(关键在这一步,还是python的语法,变量赋值,形成字符串的功能,过程中print一下看下结果就行)
element = wd.find_element_by_xpath('//*[@id="tinymce"]/p/span')
wd.execute_script(js, element)
页: [1]
查看完整版本: 怎样把python变量传递到javascript语句中起作用呢?