|
|
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
Господа, помогите пожалуйста с сабжем, очень нужно, полночи не спал, так и не смог победить Логинись на сайт через WebBrowser, вроде нашел названия полей логина и пароля, забиваю в них значения (везде на форумах почти один и тот же код), эмулирую нажатие кнопки Войти, но не работает. Точнее логин и пароль вроде как записываются куда надо, но при нажатии на кнопку происходит ошибка входа (см. скрин). Как будто логин и пароль на самом деле не введены, хотя и отображаются - по крайней мере логин. Причем неважно - эмулирую нажатие кнопки или сам нажимаю - одно и то же А вот если вручную ввожу логин и пароль и вручную же нажимаю кнопку Войти, то все ок. Вот код Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Вот код страницы, просьба не пинать за нечитабельный вид, хз как его отформатировать авторvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:"form-login"},[_c('div',{staticClass:"wrap"},[_c('img',{staticClass:"wb-logo",attrs:{"src":require("../../assets/wbpartners.svg"),"alt":"","width":"350px"}}),_c('form',{staticClass:"login-form",on:{"submit":function($event){$event.preventDefault();return _vm.submitForm($event)}}},[_c('h1',{staticClass:"login-form_title"},[_vm._v("Вход на портал")]),_c('label',{staticClass:"login-form_label",attrs:{"for":""}},[_vm._v("\n Логин или почта\n "),_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.email),expression:"email"},{name:"validate",rawName:"v-validate",value:('required'),expression:"'required'"}],attrs:{"name":"email_or_login","placeholder":"example@gmail.com"},domProps:{"value":(_vm.email)},on:{"input":function($event){if($event.target.composing){ return; }_vm.email=$event.target.value}}}),_c('span',{directives:[{name:"show",rawName:"v-show",value:(_vm.errors.has('email_or_login')),expression:"errors.has('email_or_login')"}],staticClass:"error"},[_vm._v(_vm._s(_vm.errors.first('email_or_login')))])]),_c('label',{staticClass:"login-form_label",attrs:{"for":""}},[_vm._v("\n Пароль\n "),_c('div',{staticClass:"password-eye-wrapper"},[((_vm.passInputType)==='checkbox')?_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.password),expression:"password"},{name:"validate",rawName:"v-validate",value:('required'),expression:"'required'"}],attrs:{"name":"password","placeholder":_vm.passPlaceholder,"type":"checkbox"},domProps:{"checked":Array.isArray(_vm.password)?_vm._i(_vm.password,null)>-1:(_vm.password)},on:{"change":function($event){var $$a=_vm.password,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.password=$$a.concat([$$v]))}else{$$i>-1&&(_vm.password=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.password=$$c}}}}):((_vm.passInputType)==='radio')?_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.password),expression:"password"},{name:"validate",rawName:"v-validate",value:('required'),expression:"'required'"}],attrs:{"name":"password","placeholder":_vm.passPlaceholder,"type":"radio"},domProps:{"checked":_vm._q(_vm.password,null)},on:{"change":function($event){_vm.password=null}}}):_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.password),expression:"password"},{name:"validate",rawName:"v-validate",value:('required'),expression:"'required'"}],attrs:{"name":"password","placeholder":_vm.passPlaceholder,"type":_vm.passInputType},domProps:{"value":(_vm.password)},on:{"input":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_c('img',{staticClass:"password-eye",attrs:{"role":"button","src":_vm.eyeImgSrc,"alt":""},on:{"click":function($event){_vm.eyeOpen = !_vm.eyeOpen}}})]),_c('span',{directives:[{name:"show",rawName:"v-show",value:(_vm.errors.has('password')),expression:"errors.has('password')"}],staticClass:"error"},[_vm._v(_vm._s(_vm.errors.first('password')))]),_c('router-link',{staticClass:"login-form_link",attrs:{"to":"/pass-recovery"}},[_vm._v("Забыли пароль?")])],1),(_vm.showCaptcha)?_c('label',{staticClass:"login-form_label login-form_label-captcha",attrs:{"for":""}},[_c('div',{staticClass:"captcha-wrapper"},[_c('img',{attrs:{"id":"image","src":_vm.captchaUrl,"alt":"Captcha image"}}),_c('input',{staticClass:"login-form_button",attrs:{"type":"button","value":"?"},on:{"click":_vm.reloadCaptcha}})]),_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.captchaSolution),expression:"captchaSolution"},{name:"validate",rawName:"v-validate",value:('required'),expression:"'required'"}],staticClass:"login-form_captcha",attrs:{"name":"captcha","placeholder":"введите код с картинки"},domProps:{"value":(_vm.captchaSolution)},on:{"input":function($event){if($event.target.composing){ return; }_vm.captchaSolution=$event.target.value}}}),_c('span',{directives:[{name:"show",rawName:"v-show",value:(_vm.errors.has('captcha')),expression:"errors.has('captcha')"}],staticClass:"error"},[_vm._v(_vm._s(_vm.errors.first('captcha')))])]):_vm._e(),_c('ul',[(_vm.errorMessage)?_c('li',[_vm._v(_vm._s(_vm.errorMessage))]):_vm._e()]),_c('input',{staticClass:"login-form_button",attrs:{"type":"submit","value":"Войти","disabled":_vm.inProcess}})])])])} var staticRenderFns = [] П.С. Перевешивание нажатия на другую кнопку как советуют ничего не дает, принудительный вызов onchange в полях - тоже П.П.С. Delphi Rio ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2020, 08:39 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
То есть после нажатия кнопки программно введенные логин и пароль пропадают из полей, хотя до этого отображались и как бы пытаюсь логиниться с пустым логином и паролем - так я понимаю эту ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2020, 09:15 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, вот реальный код страницы Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2020, 12:04 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
Код: javascript 1. Может быть как-то связано с этим? Т.е. сам компонент WebBrowser корректно не обрабатывает отправку событий? Как вариант, попробовать браузер TChromium ( CEF4 ). Ну и как кАстыль, искать на странице браузера кнопку, перемещать туда курсор и кликать принудительно через PostMessage :-/ Этот мой совет забудьте, как страшный сон ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2020, 12:13 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
KinsT_UA, Думаю WebBrowser корректно отрабатывает - я же могу залогиниться, если прямо в нем вручную ставлю логин и пароль и нажимаю кнопку. Вся проблема в том что я не могу корректно эмулировать это программно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2020, 12:26 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
арт2010 Вся проблема в том что я не могу корректно эмулировать это программно Попробуйте взять Selenium IDE (для IE не знаю, есть ли он, для FF точно есть) записать и посмотреть, что кликается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2020, 12:47 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
арт2010, По умолчанию, "вот эта-вот OLE автоматизация" использует, если не ошибаюсь, движок IE-7 со всеми вытекающими. Если порыться здесь на форуме, можно найти как и какой ключ в реестре надо поменять. Чтоб было как в браузере. Но тут решать Вам. Менять ключ у пользователей, или как-нить обойдется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2020, 12:56 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
Продолжение. Проблему решил, но возникла новая. Как мне дальше перебирать элементы после вхождения в личный кабинет и впоследствии при обновлении страницы (в том числе со сменой URL?) Сейчас на первом шаге после успешного логирования URL остается прежним, но элементы я получить уже не могу - пусто. Хоть так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Хоть так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Поэтому вынужден использовать WebBrowser2 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Так вроде работает, но возникает такая затычка - если логирование происходит "с нуля", то все ок, элементы получаются, Но если не делать логаут и снова запускать программу, то есть страница будет грузиться в WebBrowser1 без ввода логина и пароля, то при обходе элементов WebBrowser2 опять пусто Как избавиться от этого? Вот тут нашел вроде как https://stackoverrun.com/ru/q/7342410 но не работает у меня ( Какие еще есть варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2020, 23:23 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
с этом тоже вроде разобрался, все нормально отрабатывает через WebBrowser1, это я затупил Но дальше столкнулся с настоящим затыком. Сейчас я логинюсь нормально, потом выбираю программно элемент меню, у него вытаскиваю внутренний href типа (href = "/product_cards") и перехожу по нему. При этом меню остается, но справа появляется фрейм с кучей элементов, к которым мне получить доступ. При этом в коде страницы ссылки на них нет в отличие от предыдущего меню То есть как я понимаю я уже не смогу получить доступ к нему как раньше Тут уже похоже подгружается js скриптами, но как с ними работать? ну никак не могу въехать. Когда смотрю код страницы через WebBrowser или просто браузер, то кончается на Код: html 1. 2. 3. не считая скрипта А если правой кнопкой и не "Просмотреть код страницы", а просто "Просмотреть код", то там естественно дальше идет код, подгружаемый динамически (см. скрин). В коде станице несколько мест, где вызывается .js или тег <script> Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778. 779. 780. 781. 782. 783. 784. 785. 786. 787. 788. 789. 790. 791. 792. 793. 794. 795. 796. 797. 798. 799. 800. 801. 802. 803. 804. 805. 806. 807. 808. 809. 810. 811. 812. 813. 814. 815. 816. 817. 818. 819. 820. 821. 822. 823. 824. 825. 826. 827. 828. 829. 830. 831. 832. 833. 834. 835. 836. 837. 838. 839. 840. 841. 842. 843. 844. 845. 846. 847. 848. 849. 850. 851. 852. 853. 854. 855. 856. 857. 858. 859. 860. 861. 862. 863. 864. 865. 866. 867. 868. 869. 870. 871. 872. 873. 874. 875. 876. 877. 878. 879. 880. 881. 882. 883. 884. 885. 886. 887. 888. 889. 890. 891. 892. 893. 894. 895. 896. 897. 898. 899. 900. 901. 902. 903. 904. 905. 906. 907. 908. 909. 910. 911. 912. 913. 914. Но как мне эмулировать то этот код? Как вообще понять откуда он вызывается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2020, 17:00 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
арт2010, наверно, надо дожидаться пока браузер закончит работу, т.е. отслеживать его status https://stackoverflow.com/questions/2777878/detect-webbrowser-complete-page-loading ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2020, 17:28 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
Cobalt747, уже пробовал, событие ondocumentcompleted почему то вообще не вызывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2020, 18:26 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
арт2010, а TWebBrowser.ReadyState меняет свои значения? можно по таймеру ждать READYSTATE_COMPLETE (4 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2020, 13:48 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
Zelius, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. А мне вот этот код не нравится ни разу... Если в DOM кнопка окажется "впереди" полей ввода - попытаешься войти с пустым паролем. Т.е. тут по идее надо бы сначала заполнить поля логина/пароля, а потом уже на кнопку тыкать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2020, 15:07 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
DarkMaster, была такая проблема, уже решил. Можете подсказать по последней озвученной проблеме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2020, 15:39 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
Zelius, проверю, но что-то подсказывает что страница почему то не подгружается не конца - 1) ondocumentcompleted не срабатывает и 2) визуально в самом twebroswer что-то не то - вообще как будто один фон, без всяких элементов. Это правда трудно проверить - я не знаю - должен сайт отображаться в twebroswer так же как в браузере с масштабированием или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2020, 15:44 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
арт2010, WebBrowser и есть IE на самом деле - должно отображаться так же. А срипт можно выполнить и принудительно. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2020, 16:11 |
|
||
|
Залогиниться на сайте WebBrowser
|
|||
|---|---|---|---|
|
#18+
арт2010, Если там фреймы (вдруг) - посмотри еще здесь https://www.sql.ru/forum/888135/webbrowser-kak-poluchit-dostup-k-freymu-kotoryy-raspolozhen-na-drugom-domene ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2020, 16:13 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2037984]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 415ms |

| 0 / 0 |
