脚本如下:
script = "document.evaluate(\"(.//*[@aria-label='Message Body'])[2]\", document).iterateNext().innerHTML = '<b>Test</b><br/><i>html</i>'"
如您所见,我至少需要对引号或撇号中的一个进行转义。你知道吗
其他变体可能是:
script = 'document.evaluate("(.//*[@aria-label=\'Message Body\'])[2]", document).iterateNext().innerHTML = "<b>Test</b><br/><i>html</i>"'
当与driver.execute_script(script)
一起使用时,文本首先得到它的\
转义一次,在Selenium代码中执行之后,它又得到一次转义,导致\\\'
传递给Java脚本引擎,这导致SyntaxError: Invalid or unexpected token
错误。你知道吗
我试过用r'test\''
但是结果是有更多的转义字符。你知道吗
有没有办法将脚本正确地传递给驱动程序?你知道吗
我找到了解决办法。你知道吗
我注意到在使用%r时,如果外部字符串用“”引用,则该字符串用“”导入;如果外部字符串用“”引用,则该字符串用“”导入。你知道吗
示例:
所以我将需要转义的地方替换为%r(不带引号),得到以下结果:
script = "document.evaluate(%r, document).iterateNext().innerHTML = %r" % ("(.//*[@aria-label='Message Body'])[2]", "<b>Test</b><br/></i>test</i>")
女巫给出的正是预期的结果。你知道吗
我希望这能帮助有类似问题的人。你知道吗
相关问题 更多 >
编程相关推荐