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[]调用这些参数
1条答案
按热度按时间voj3qocg1#
你忘了把那些大括号换掉了:
return getElementByXpath({xpath}).checked;
在多行中转义大括号的方法是将它们加倍
{{ }}