如何判断谷歌浏览器中的按钮是否存在并按要求点击?
如图所示,chrom浏览器打开网页后才会显示按钮,我想通过颜色来判断按钮是否存在,确发现PixelGetColor函数根本无法取色,还有其他办法吗?; 激活谷歌浏览器窗口
WinActivate("同花顺创作平台-Google Chrome")
; 检查按钮是否存在
ControlCommand("同花顺创作平台-Google Chrome", "", "Chrome_WidgetWin_1", "IsEnabled")
试试
谢谢楼上的回复,可能是我的问题没有描述清楚。
这个按钮不是控件其实就是一个链接。由于网速不稳定,每次页面刷新后,按钮链接显示出来的时间也不同有时甚至会不显示按钮,我需要一个准确判断这个链接是否显示成功。 本帖最后由 fybhwsx 于 2023-5-13 06:23 编辑
找色不行,只能搜图了吧…… 如果窗口内不能找色,那不激活窗口,整屏截图应该就可以找色了吧? 截屏找色要保存图片再找,效率有点低,有木有能在剪切板里找色的办法? 1#图片显示的颜色 0xF0F0F0 应该是正确的,PixelGetColor 不行?代码问题吧 afan 发表于 2023-5-15 11:31
1#图片显示的颜色 0xF0F0F0 应该是正确的,PixelGetColor 不行?代码问题吧
这是截图后取到的颜色,直接从网页上是取不到颜色的。 本帖最后由 afan 于 2023-5-15 14:17 编辑
microzhou 发表于 2023-5-15 13:34
这是截图后取到的颜色,直接从网页上是取不到颜色的。
你的图片分明是窗口控件信息,截图?
如果 0xF0F0F0 是指向的蓝色按钮,只能说获取的颜色不对才是。这种情况一般是带有分层样式的窗口,可以先截图再获取色值。
你可以用 屏幕巡查 测试下,勾选“分层”与不勾选的差别
0xF0F0F0,是蓝色按钮附近那一块位置的取色值,鼠标在蓝色和白色位置是取色都是 0xF0F0F0。 #include "wd_helper.au3"
#include "wd_capabilities.au3"
Global $_WD_DEBUG = 0 ; You could also use $_WD_DEBUG_Error
Global $_DEBUG = ["OFF", "WARNING", "INFO", "ALL"]
Global $sDesiredCapabilities, $sSession, $sElement
Global $ResSU, $ResSUE
_WD_UpdateDriver("Chrome")
$sDesiredCapabilities = SetupChrome(False)
$ResSU = _WD_Startup()
$ResSUE = @error
If $ResSU = 0 Then Exit MsgBox(262144, "", "Result Startup = " & $ResSU & " " & "Error = " & $ResSUE)
QQDown()
Func QQDown()
Local $XPath, $sSession, $sElement, $sRes
$sSession = _WD_CreateSession($sDesiredCapabilities)
_WD_SetTimeouts($sSession, '{"pageLoad":10000}')
_WD_Navigate($sSession, "https://im.qq.com/pcqq")
$XPath = '//*[@class="btn-downlond"]/a'
$sElement = _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, $XPath) ;等待按钮加载
$sRes = @error
Sleep(250)
If $sRes = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement, 'click');点击按钮
MsgBox(0,"","点击了下载按钮")
Sleep(2000)
EndIf
_WD_DeleteSession($sSession)
_WD_Shutdown($ResSU)
EndFunc ;==>Fanyi
Func SetupChrome($Head)
_WD_Option('Driver', 'chromedriver.exe')
_WD_Option('Port', 9515)
_WD_Option('DriverParams', '--log-level=' & $_DEBUG[$_WD_DEBUG] & ' --log-path="' & @ScriptDir & '\chrome.log"')
_WD_CapabilitiesStartup()
_WD_CapabilitiesAdd('alwaysMatch', 'chrome')
_WD_CapabilitiesAdd('excludeSwitches', 'enable-automation')
_WD_CapabilitiesAdd('excludeSwitches', 'load-extension')
;_WD_CapabilitiesAdd('args', "--guest")
If $Head Then
_WD_CapabilitiesAdd('args', '--headless') ;无头模式
EndIf
_WD_CapabilitiesAdd('binary', _WD_GetBrowserPath("chrome")) ; 设置浏览器路径
_WD_CapabilitiesDump(@ScriptLineNumber) ; dump current Capabilities setting to console - only for testing in this demo
Local $sCapabilities = _WD_CapabilitiesGet()
Return $sCapabilities
EndFunc ;==>SetupEdge
我尝试运行上面的代码,报错了。 本帖最后由 gyp2000 于 2023-5-16 18:32 编辑
microzhou 发表于 2023-5-16 15:11
我尝试运行上面的代码,报错了。
3.3.16.1下测试通过。旧版本估计需要修改一下编译参数。 已经下载了最新版本,运行是没问题了,慢慢啃代码。
au3WebDriver-1.0.0
目前 _WD_UpdateDriver 函数如果找不到对应版本的 WebDriver驱动将返回失败,需要手动下载 WebDriver驱动
https://github.com/Danp2/au3WebDriver/releases/
页:
[1]
2