我手头上的selenium 是2021-07-04年SeleniumBasic 3.141.0.0的。我们可以认为“Selenium”它最大的贡献就是在于把原来java、c#、python才能玩的东西,VFP同样能搞,因为它支持的浏览器非常多:Chrome、Firefox、Microsoft Edge、Internet Explorer、Opera、Safari、QQ和360等浏览。我们可以理解在VFP上可以控制这些浏览器,去为了我们网页任务工作。比2016年进步了太多。稳定性和操控性都变好了。selenium是基于webdriver协议
几个概念,selenium, webdriver, chromedriver, chrome
chrome可以作为浏览器代表(没有自己下载), ChromeDriver - WebDriver for Chrome ,selenium 通过webdriver协议控制浏览器,那么首先你
得有ChromeDriver,没有自己网下载,官网提供了一些驱动,注意chromedriver的版本一定要与Chrome的版本一致,不然就不起作用。你首先需要查看你的Chrome版本,在浏览器中输入chrome://version/ 或者点击关于。
然后我们去下载:https://npm.taobao.org/mirrors/chromedriver/,我下载了52版本相似
直接下载就可以,解压下来是exe文件,
解压下来后,将这个exe文件放在你的代码调用的 目录下,
然后下载Selenium,运行RegAsm.bat(与regsvr32类似,熟悉的朋友应该都知道C#开发出来的DLL都是用它注册DLL,VFP才能调用)
会看到7个文件,功能如下:
• SeleniumBasic.dll和SeleniumBasic.tlb:这两个是类型库,提供了VBA环境中用到的SeleniumBasic命名空间中的对象、成员。在VBA工程中需要添加引用SeleniumBasic.tlb(我们VFP主要就是利用VBA来调用它)
• RegAsm.bat:用于注册dll,因为释放到你电脑以后,只是把文件放到磁盘上了,要让dll和tlb发挥作用,还需要向注册表中写入内容。因此需要用管理员权限运行该bat文件。
• UnRegAsm.bat:反注册。当你不再需要V3时,用管理员权限运行这个bat,可以从注册表中移除写入的内容。相当于软件的卸载。
• WebDriver.dll和WebDriver.Support.dll:.NET语言所需的动态链接库
接下来我们使用VS2015对象浏览器查看一下这个SeleniumBasic.DLL,VFP的对象浏览器很弱,只能查看OLE COM的DLL,这个C#的不能查看.
上述准备好后,让我们用VFP调用它驱动chrome打开一个百度网页然后查找“VFP”试试
代码语言:javascript复制WD = Createobject("SeleniumBasic.IWebDriver")
Service = Createobject("SeleniumBasic.ChromeDriverService")
Options = Createobject("SeleniumBasic.ChromeOptions" )
With Service
driverPath ="C:UsersAdministratorDownloadsSeleniumBasic"
.CreateDefaultService( driverPath )
.HideCommandPromptWindow = .F.
Endwith
With Options
.BinaryLocation = "C:UsersAdministratorAppDataLocalGoogleChromeApplicationchrome.exe"
Endwith
WD.New_ChromeDriver( Service , Options )
WD.URL = "https://www.baidu.com"
form = WD.FindElementById("form")
keyword = form.FindElementById("kw")
keyword.clear
keyword.SendKeys( "VFP" )
button = form.FindElementById("su")
button.Click
?WD.Title
*!* ?WD.URL
*!* ?WD.PageSource
VFP的无人区,请狐友们备必跟上。