microzhou 发表于 2023-5-10 15:16:06

如何判断谷歌浏览器中的按钮是否存在并按要求点击?

如图所示,chrom浏览器打开网页后才会显示按钮,我想通过颜色来判断按钮是否存在,确发现PixelGetColor函数根本无法取色,还有其他办法吗?

itzyx 发表于 2023-5-10 21:23:41

; 激活谷歌浏览器窗口
WinActivate("同花顺创作平台-Google Chrome")

; 检查按钮是否存在
ControlCommand("同花顺创作平台-Google Chrome", "", "Chrome_WidgetWin_1", "IsEnabled")

试试

microzhou 发表于 2023-5-11 10:21:14

谢谢楼上的回复,可能是我的问题没有描述清楚。
这个按钮不是控件其实就是一个链接。由于网速不稳定,每次页面刷新后,按钮链接显示出来的时间也不同有时甚至会不显示按钮,我需要一个准确判断这个链接是否显示成功。

fybhwsx 发表于 2023-5-13 06:21:54

本帖最后由 fybhwsx 于 2023-5-13 06:23 编辑

找色不行,只能搜图了吧……

msold5 发表于 2023-5-15 08:05:48

如果窗口内不能找色,那不激活窗口,整屏截图应该就可以找色了吧?

microzhou 发表于 2023-5-15 10:29:14

截屏找色要保存图片再找,效率有点低,有木有能在剪切板里找色的办法?

afan 发表于 2023-5-15 11:31:17

1#图片显示的颜色 0xF0F0F0 应该是正确的,PixelGetColor 不行?代码问题吧

microzhou 发表于 2023-5-15 13:34:15

afan 发表于 2023-5-15 11:31
1#图片显示的颜色 0xF0F0F0 应该是正确的,PixelGetColor 不行?代码问题吧

这是截图后取到的颜色,直接从网页上是取不到颜色的。

afan 发表于 2023-5-15 14:02:37

本帖最后由 afan 于 2023-5-15 14:17 编辑

microzhou 发表于 2023-5-15 13:34
这是截图后取到的颜色,直接从网页上是取不到颜色的。
你的图片分明是窗口控件信息,截图?
如果 0xF0F0F0 是指向的蓝色按钮,只能说获取的颜色不对才是。这种情况一般是带有分层样式的窗口,可以先截图再获取色值。

你可以用 屏幕巡查 测试下,勾选“分层”与不勾选的差别

microzhou 发表于 2023-5-15 16:39:05

0xF0F0F0,是蓝色按钮附近那一块位置的取色值,鼠标在蓝色和白色位置是取色都是 0xF0F0F0。

gyp2000 发表于 2023-5-16 10:08:11

#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

microzhou 发表于 2023-5-16 15:11:26

我尝试运行上面的代码,报错了。

gyp2000 发表于 2023-5-16 18:30:46

本帖最后由 gyp2000 于 2023-5-16 18:32 编辑

microzhou 发表于 2023-5-16 15:11
我尝试运行上面的代码,报错了。
3.3.16.1下测试通过。旧版本估计需要修改一下编译参数。

microzhou 发表于 2023-5-17 10:13:01

已经下载了最新版本,运行是没问题了,慢慢啃代码。

gyp2000 发表于 2023-5-17 18:51:17




au3WebDriver-1.0.0



目前 _WD_UpdateDriver 函数如果找不到对应版本的 WebDriver驱动将返回失败,需要手动下载 WebDriver驱动





https://github.com/Danp2/au3WebDriver/releases/

页: [1] 2
查看完整版本: 如何判断谷歌浏览器中的按钮是否存在并按要求点击?