selenium driver.execute_script中的转义括号

wnavrhmk  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(184)

Webdriver找不到元素,因此我想以常规形式执行一些操作:

def is_checked(driver, xpath):
    checked = driver.execute_script(
"""function getElementByXpath(path) {{return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}}
return getElementByXpath({xpath}).checked;""".format(xpath=xpath)
    )
    return checked

但我得到selenium.common.exceptions.JavascriptException: Message: javascript error: Unexpected token '}'
没有{{我得到KeyError: 'return document'
用\转义{似乎也不起作用,我不希望硬编码每个路径,最终得到无数的函数。
一定有办法让python和javascript都满意。
编辑:我找到了一个变通方法,execute_script可以接受额外的参数,然后可以在js内部使用arguments[]调用这些参数

voj3qocg

voj3qocg1#

你忘了把那些大括号换掉了:return getElementByXpath({xpath}).checked;
在多行中转义大括号的方法是将它们加倍{{ }}

相关问题