我有一个python selenium脚本来更新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';
});
答案 0 :(得分:0)
您必须运行python脚本并转储script
的输出。然后拿出它并在浏览器中运行它以查看它是否可行...或者您可以只运行脚本,也可以添加一些断点以在运行时查看变量等。
答案 1 :(得分:0)
通常,如果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节点)