Re: AHK: Получение динамически формируемого текста в переменную
А если сохранить страницу в виде HTML-файла, в нём эти данные будут присутствовать?
3 2022-02-07 22:25:39 (изменено: Ander, 2022-02-08 13:47:43)
Re: AHK: Получение динамически формируемого текста в переменную
ypppu
Нет их там.
Re: AHK: Получение динамически формируемого текста в переменную
Можно через HTTP запросы. Ищите по Получить текст с HTML страницы в переменную.
Re: AHK: Получение динамически формируемого текста в переменную
но код страницы подтягивает эти данные скриптом
Каким таким скриптом?
ИМХО стандартный input.
Re: AHK: Получение динамически формируемого текста в переменную
Подозреваю, что речь идёт о сохранённых в браузере данных для заполнения форм.
7 2022-02-08 04:12:41 (изменено: svoboden, 2022-02-08 04:51:54)
Re: AHK: Получение динамически формируемого текста в переменную
Я, думаю, там нет никаких скриптов. А нужно просто получить данные из html страницы, например:
link := "адрес"
req := ComObjCreate("MSXML2.XMLHTTP.6.0")
req.Open("GET", link)
req.Send()
html := req.responseText
document := ComObjCreate("HTMLfile")
document.Open()
document.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
document.write(html)
document.Close()
msgbox % document.getElementsByClassName("class")[0].innerText
8 2022-02-08 12:53:52 (изменено: Ander, 2022-02-08 13:47:07)
Re: AHK: Получение динамически формируемого текста в переменную
svoboden
Выведу значение переменной html
<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8">
<title>Личный кабинет</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="assets/img/favicon-32x32.png">
<style type="text/css">@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fBBc-.woff) format('woff');}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxM.woff) format('woff');}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fBBc-.woff) format('woff');}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0370-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style>
<style>
app-root:empty {
display: block;
height: 100%;
width: 100%;
}
app-root:empty:before {
content: '';
display: block;
position: absolute;
top: 50%;
left: 50%;
height: 54px;
width: 54px;
margin: -27px 0 0 -27px;
border: 8px transparent solid;
border-top: 8px #3070ee solid;
border-radius: 50%;
-webkit-animation: bootstrap-progress-spin 1s infinite linear;
animation: bootstrap-progress-spin 1s infinite linear;
z-index: 1;
box-sizing: border-box;
}
app-root:empty:after {
content: '';
display: block;
position: absolute;
top: 50%;
left: 50%;
height: 50px;
width: 50px;
margin: -25px 0 0 -25px;
border: 4px #adb5cc solid;
border-radius: 50%;
box-sizing: border-box;
}
@-webkit-keyframes bootstrap-progress-spin {
from {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
to {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
}
@keyframes bootstrap-progress-spin {
from {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
to {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
}
</style>
<!-- Google Tag Manager -->
<script>
;(function (w, d, s, l, i) {
w[l] = w[l] || []
w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' })
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : ''
j.async = true
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl
f.parentNode.insertBefore(j, f)
})(window, document, 'script', 'dataLayer', 'GTM-WH8X287')
</script>
<!-- End Google Tag Manager -->
<link rel="stylesheet" href="https://site.com/styles.5b803a1b2efc88affb9a.css"></head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe
src="https://www.googletagmanager.com/ns.html?id=GTM-WH8X287"
height="0"
width="0"
style="display: none; visibility: hidden"
></iframe
></noscript>
<!-- End Google Tag Manager (noscript) -->
<app-root></app-root>
<script src="https://site.com/runtime-es2015.bf95a3479a79831d8adf.js" type="module"></script><script src="https://site.com/runtime-es5.bf95a3479a79831d8adf.js" nomodule defer></script><script src="https://site.com/polyfills-es5.d68d7fbbf1e8279fa50b.js" nomodule defer></script><script src="https://site.com/polyfills-es2015.555720771bf6c0db2c98.js" type="module"></script><script src="site.com/main-es2015.94f4c31a9c435e5083d9.js" type="module"></script><script src="https://site.com/main-es5.94f4c31a9c435e5083d9.js" nomodule defer></script>
</body></html>
Здесь нет имени клиента .
Re: AHK: Получение динамически формируемого текста в переменную
Re: AHK: Получение динамически формируемого текста в переменную
Malcev
Пожалуйста поясните, я не понимаю как Ваша ссылка относится к получаемому html документу. Вы меня сильно не пинайте - это первый мой скрипт на AHK.
Re: AHK: Получение динамически формируемого текста в переменную
С ahk ваша тема никак не связана.
У тага input есть атрибут value.
Его и получайте.
Re: AHK: Получение динамически формируемого текста в переменную
это первый мой скрипт на AHK
А на javascript?
Re: AHK: Получение динамически формируемого текста в переменную
teadrinker
Вообще не стыкался с JavaScript.
Re: AHK: Получение динамически формируемого текста в переменную
Тогда, боюсь, вы взялись за непосильную задачу. Начните изучение AHK с чего-то более простого.
Re: AHK: Получение динамически формируемого текста в переменную
Та у меня все уперлось именно в эти 5 полей, все остальное уже работает. Потому и обратился за помощью сюда.
Re: AHK: Получение динамически формируемого текста в переменную
Ну смотрите, значение со страницы можно получить джаваскриптом, ссылку вам дали. Джаваскрипт вы можете запустить из адресной строки браузера. Кроме того, вам нужно как-то получить значение из джаваскрипта. Проще всего это сделать через буфер обмена, т. е. джаваскрипт должен поместить значение туда. Соответственно, вам нужно как-то решить эти задачи. Джавскрипт удобно тестировать в консоли Инструментов Разработчика в браузере.
Re: AHK: Получение динамически формируемого текста в переменную
У меня нужные поля достаются с помощю подобных выражений:
Item_SKU := PageInst.Evaluate("document.querySelector('СЕЛЕКТОР').innerHTML").value
В этих 5 полях нет или я не знаю как раздобыть селектор. В принипе это и вся загвоздка со скриптом.
Re: AHK: Получение динамически формируемого текста в переменную
А, ну вы бы написали, что используете Chrome.ahk, как это можно было понять?
Тогда проще, по идее должно работать так:
PageInst.Evaluate("document.querySelector('input[formcontrolname=""firstName""]').value").value
Re: AHK: Получение динамически формируемого текста в переменную
Выведу значение переменной html
Так в браузере есть же эти данные. Может эти данные и подтягиваются каким-нибудь скриптом, но что выводится в переменную html при get запросе вообще непонятно.
Re: AHK: Получение динамически формируемого текста в переменную
Ander, гуглите querySelector и querySelectorAll. Собственно по селекторам хорошая статья, например, вот, там для CSS, но то же самое подойдёт и для querySelector. Тестировать применение querySelector и querySelectorAll удобно в консоли инструментов разработчика: вводите document.querySelector('здесь селектор') (или document.querySelectorAll('здесь селектор')[индекс]), если селектор верный — элемент должен выделиться на странице.
Re: AHK: Получение динамически формируемого текста в переменную
teadrinker
В элементах разработчика я стрелочкой кликаю на элемент и мне подсвечивает тег по которму, если правой кнопкой клацнуть можно скопировать селектор. Так для этих 2-х элементов этот метод не работает.
Re: AHK: Получение динамически формируемого текста в переменную
Такое бывает, используйте querySelectorAll.