[英]JavaScript click works in console but not inside Selenium execute_script
[英]how to run javascript in console similar to execute_script
我有一个python硒脚本从datefield更新日期。
script = """
var date = 'input[id="date"]';
return date.value = {};
""".format('2018-01-09')
value = self.driver.execute_script(script)
但是我如何验证这在浏览器控制台中是否有效。 我正在使用Safari。
在控制台中,我可以运行document.getElementById('date').value = '2018-01-09'
来更改日期。 但是,如何验证execute_script
是否可以在控制台中使用。 我在cosnsole中尝试过此方法,但不起作用
$(function($){
var date = 'input[id="date"]';
return date.value = '2018-01-09';
});
通常,如果javascript代码段可以在浏览器控制台中运行,那么它也应该在execute_script()中运行。 可能导致失败的唯一可能性是我们从程序脚本端向下传递javascript代码段的参数。
让我们以以下示例进行说明,怀疑我们要更改inputbox的值,可以使用如下所示的execuite_script()进行归档:
inputEle = driver.find_element_by_xxxx('css/xpath locator')
newValue = '';
driver.execute_script('arguments[0].value=arguments[1]', inputEle, newValue)
在上面的示例中,有两个参数从程序脚本端传递到javascript代码段:
1) inputEle
将替换占位符: arguments[0]
2) newValue
将取代占位符: arguemnts[1]
仅当找不到元素inputEle
,execute_script()才会失败。 一旦确定arguments[0].value=arguments[1]
是浏览器中正确的javascript代码段,没有其他因素会导致execute_script()失败。
我们可以使用以下手动步骤来确认execute_script()可以在执行效果之前将其存档:
验证浏览器DevTool Element
选项卡中的css / xpath定位器
如下图所示,匹配的元素HTML代码将以黄色背景突出显示,然后将鼠标悬停在HTML代码上,页面上的相应元素将突出显示,直到现在我们可以确认css / xpath定位器可以找到所需的元素或不。
在浏览器的“ DevTool Console
选项卡中验证JavaScript代码段
a)选择元素的HTML节点,然后切换到“ Console
选项卡
b)键入$ 0并按Enter,它将打印出所选元素的HTML代码
c)仔细检查输出HTML是否与所选元素相同
d)键入$ 0.value =并按Enter
e)返回页面以检查页面上的所有更改,这是您想要的。
(在Chrome DevTool中,$ 0代表“ Element
选项卡中选定的HTML节点)
你将不得不运行python脚本并转储输出script
。 然后使用它并在浏览器中运行它,看看它是否可以工作...或者您可以运行脚本,也许添加一些断点以在运行时查看变量,等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.