请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
查看: 1353|回复: 8

[已解决] 关于取得chrome浏览器的网页源文件出错的问题。

[复制链接]

8

主题

34

帖子

40

积分
交易币
0

新手入门

Rank: 1

发表于 2021-4-15 16:52:45 | 显示全部楼层 |阅读模式
本帖最后由 yu1025 于 2021-4-17 14:20 编辑

我想用以下的语句取得chrome浏览器的网页源文件。但每次运行都得到br1为NULL的提示,同时,  winform.edit.text=br1.source.get()这一句显示错误。我在chrome.exe的属性“目标”里也设置了“C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222”
请问高手,问题出在哪里。
因为这个网址的网页直接显示源文件是看不到真实的网页代码的,用“检查”功能才看得到。

import win.ui;
/*DSG{{*/
var winform = win.form(text=" ";right=624;bottom=318)
winform.add(
button={cls="button";text="转到指定网址";left=316;top=263;right=457;bottom=299;z=1};
edit={cls="edit";text='return document.querySelector("a.logo").title;';left=14;top=15;right=611;bottom=244;edge=1;multiline=1;z=2}
)
/*}}*/
//WebDriver自动化
import console;
import chrome.driver;
import chrome.app;
//创建chromeDriver对象
var driver = chrome.driver("C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe");
//创建会话,打开chrome浏览器,Chrome新版会强制显示控制台
var browser = driver.startBrowser();
driver.debuggerPort=9222;
var br1 = driver.attach(9222);
winform.button.oncommand = function(id,event){
    //打开网页
    browser.go("https://www.hzzhdj.cn/");
    win.delay(3000)
    winform.msgbox(br1)
    winform.edit.text=br1.source.get()

}



回复

使用道具 举报

0

主题

2

帖子

1

积分
交易币
0

新手入门

Rank: 1

发表于 2021-4-16 00:51:07 | 显示全部楼层
一件很简单的事被你搞复杂了,其实按 aardio 自带的范例写就行了。

1、一般不用指定chrome路径,他会自己找
2、你也不需要指定调试端口,他本来就会自动处理这些。
3、你 driver.startBrowser() 已经得到接口对象,可以操作浏览器了,为什么你又去  driver.attach(9222); 一下呢? 他已经启动了,你又让他去绑定另一个浏览器端口怎么可能成功? 他都启动了你改端口怎么可能有效? 全都是错乱的。
4、你改桌面快捷方式的端口,跟这个没有一点关系。

import console;
import chrome.driver;

var driver = chrome.driver();
var browser = driver.startBrowser();

browser.go(
"https://www.baidu.com");
console.dumpJson(browser.source.get())

console.pause(
true);
简单几句代码就可以解决问题。

chrome.driver 在执行时会阻塞的,所以不要放到界面线程里搞,会卡界面。


回复 支持 反对

使用道具 举报

0

主题

2

帖子

1

积分
交易币
0

新手入门

Rank: 1

发表于 2021-4-16 00:57:51 | 显示全部楼层
耗时阻塞的操作可以放到后台线程里:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
edit={cls=
"edit";left=33;top=35;right=717;bottom=415;edge=1;multiline=1;z=1}
)
/*}}*/

import web.json;
thread.invoke(
   
function(winform){
        
import chrome.driver;
        
        
var driver = chrome.driver();
        
var browser = driver.startBrowser();
        
        browser.go(
"https://www.baidu.com");
        winform.edit.print(browser.source.get())
    },winform
)

winform.show();
win.loopMessage();


回复 支持 反对

使用道具 举报

8

主题

34

帖子

40

积分
交易币
0

新手入门

Rank: 1

 楼主| 发表于 2021-4-16 10:46:14 | 显示全部楼层
非常感谢。
再请问一下,  winform.edit.text=br1.source.get()和winform.edit.print(browser.source.get())的区别是什么?为什么我前面 一个句子不能正常显示。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分
交易币
0

新手入门

Rank: 1

发表于 2021-4-16 12:10:43 | 显示全部楼层
yu1025 发表于 2021-4-16 10:46
非常感谢。
再请问一下,  winform.edit.text=br1.source.get()和winform.edit.print(browser.source.get() ...

他已经告诉你原因了。

browser 已经可用了,你为什么要再去创建一个 br1 呢?!
他只有一个端口, 怎么能坐两个人上去? 你把端口想成火车上的座位,然后你问乘务员,为什么这个座位,browser能舒舒服服的坐上去,br1 也想坐上去舒服就不行呢?!

再说,你这个端口号都写错了,你把端口号想像成火车票,你都上车了(连接到端口了),然后打电话给售票员:“喂,能不能把座位号改一下 …… 什么,不能改?!为什么别人没上车就能改,我上了车就不能改呢?”

售票员只好说,你已经上车了啊 , 你已经上车了啊 (browser已经连接到端口了)

为什么要把代码搞这么复杂,直接用 browser 对象有什么问题呢?
回复 支持 反对

使用道具 举报

8

主题

34

帖子

40

积分
交易币
0

新手入门

Rank: 1

 楼主| 发表于 2021-4-16 14:11:30 | 显示全部楼层

感谢!解决了考虑好久的问题

本帖最后由 yu1025 于 2021-4-17 14:25 编辑

感谢!解决了考虑好久的问题
回复 支持 反对

使用道具 举报

0

主题

2

帖子

5

积分
交易币
0

新手入门

Rank: 1

发表于 2021-12-13 20:50:50 | 显示全部楼层
获取某一段源码  该怎么弄哦?获取整个页面源码好像耗时太长了  ,有啥方法可以直接获取某一段div的源码么?
回复 支持 反对

使用道具 举报

8

主题

34

帖子

40

积分
交易币
0

新手入门

Rank: 1

 楼主| 发表于 2022-1-6 12:40:17 | 显示全部楼层
a105312 发表于 2021-12-13 20:50
获取某一段源码  该怎么弄哦?获取整个页面源码好像耗时太长了  ,有啥方法可以直接获取某一段div的源码么 ...

我没有碰到慢 的问题。我都是直接读,再筛选。
回复 支持 反对

使用道具 举报

7

主题

20

帖子

110

积分
交易币
0

编程一段

Rank: 2

发表于 2022-1-8 11:44:46 | 显示全部楼层
获取某元素源码,可以用js获取
203703299 aardio教学群,免费,共同进步
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



GMT+8, 2022-1-19 06:16 , Processed in 0.081077 second(s), 24 queries .

© 2001-2011 Powered by Discuz! X3.2.

快速回复 返回顶部 返回列表