variables - 带有 Safari 10.1 的 applescript getInputByClass2

标签 variables safari applescript

自从上次系统更新以来,我过去每天运行以从 Safari 获取文本的 Applescripts 无法正常工作

它曾经只在 Safari 中工作,而不在 Safari Preview 中工作,我猜 Safari Preview 的系统现在被带到了 safari/

tell application "Safari"

    set DinfoGrab to do JavaScript "
document.getElementsByClassName(' field type-string field-Dinfo ')[0].innerHTML;" in tab 3 of window 1
end tell

出现此错误:

Safari got an error: Can’t make " document.getElementsByClassName(' field type-string field-Dinfo ')[0].innerHTML;" into type text.



我该如何解决?谢谢。

更新 :

这是与 Chrome 完美配合的东西:
tell application "Google Chrome"
        tell tab 3 of window 1 to set r to execute javascript "document.getElementsByClassName('field type-string field-Dinfo')[0].innerHTML;"
    end tell

最佳答案

没有看到完整的代码,我无法确定发生了什么。但从你的函数名称来看——getInputByClass2 -- 我假设您正在尝试获取 HTML 的值 <input>领域。如果这是真的,你应该使用 outPut.push(arr[i].value)而不是 outPut.push(arr[i].innerHTML)
至于第二位代码,如果 document.getElementsByClassName(' field type-string field-Dinfo ')[0] 的值,您的 JavaScript 没有任何错误处理。一片空白。

var els = document.getElementsByClassName(' field type-string field-Dinfo ');
//set to value of [0].innerHTML if [0] exists, else empty string
var html = els.length ? els[0].innerHTML : ""; 
//return value to AppleScript
html; 

更新(对更新问题的回应)

在脚本编辑器中针对此 StackOverflow 页面运行以下脚本将返回正确的值(假设您设置了正确的窗口/选项卡编号)。如果此 StackOverflow 页面顶部的搜索字段为空,您将得到一个空字符串。如果您输入一个术语(但不提交)然后运行 ​​AppleScript,您将获得该字段的值。
tell application "Safari"
    set DinfoGrab to do JavaScript "
document.getElementsByClassName('js-search-field')[0].value;" in tab 1 of window 1
end tell

脚本中唯一的变化是窗口/选项卡编号、类名(已更改以匹配 StackOverflow 页面),我使用了 value而不是 innerHTML .

我已经在最新版本的 Safari (10.0.3) 中进行了测试;如果这在您的 Safari 版本中不起作用,请确保您指向正确的类名。如果这个脚本对你有用,那么问题可能是由于你试图搜索的页面上的某些东西,可能与 <input> 的类型有关。您正在获取的字段或不正确的类名。也许 Safari 的更新导致页面呈现不同,这间接影响了您的代码。

关于variables - 带有 Safari 10.1 的 applescript getInputByClass2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42173239/

相关文章:

javascript - 从 2 个 JavaScript 变量中选择值

php - 如何文本对齐 :center php echo text in Firefox?

javascript - 文本链接不会在 Safari 中使用名称通过 JavaScript 提交表单

javascript - ctx.lines() 在 Mac 上最多需要 8.7 秒,但在任何其他浏览器中不到 1 毫秒

objective-c - iPhone 上的 Apple 脚本

xcode - 生成一个 xcodeproj

variables - 非法变量名称的 Csh 问题

variables - Racket:获取名称存储在另一个变量中的变量的值

python - 如何在Python中检查没有输入

applescript - 使用 Applescript 从应用程序名称获取进程名称,反之亦然