繁体   English   中英

如何在类似于execute_script的控制台中运行javascript

[英]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()可以在执行效果之前将其存档:

  1. 验证浏览器DevTool Element选项卡中的css / xpath定位器

    如下图所示,匹配的元素HTML代码将以黄色背景突出显示,然后将鼠标悬停在HTML代码上,页面上的相应元素将突出显示,直到现在我们可以确认css / xpath定位器可以找到所需的元素或不。 在此处输入图片说明

  2. 在浏览器的“ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM