针对popups类对话框的watir处理方法之一

 针对该类对话框的watir处理方法:
require 'watir'
require 'win32ole'
require 'watir/WindowHelper'
# 登陆
$ie_site ='http://members.shaw.ca/paul_rogers/watir_tests/popups1.html'
$ie = Watir::IE.new
$ie.goto $ie_site
$ie.buttons.each {|b| puts b.to_s}
$ie.button(:value,"Prompt").click_no_wait
sleep(5)
autoit = WIN32OLE.new("autoitx3.control")
ret = autoit.WinWait("Explorer 用户提示","",1)
ress =autoit.ControlFocus("Explorer 用户提示","","Edit1")
resss =autoit.ControlSetText("Explorer 用户提示", "","Edit1","New Text Here")
ss =autoit.ControlClick("Explorer 用户提示", "确定","Button1")


涉及到的函数用法格式和返回值:
WinWait
WinWait ( "title" [, "text" [, timeout]] )
Success: Returns 1.
Failure: Returns 0 if timeout occurred.
ControlFocus:
ControlFocus ( "title", "text", controlID )
Success: Returns 1.
Failure: Returns 0.
ControlSetText:
ControlSetText ( "title", "text", controlID, "new text" [, flag] )
Success: Returns 1.
Failure: Returns 0 if window/control is not found.
ControlClick:
ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )
Success: Returns 1.
Failure: Returns 0.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要解决这个问题,需要理解React中状态更新的机制。 React中的状态更新是异步的,即调用setState方法并不会立即更新组件的状态,而是将状态更新请求加入到一个队列中,等待React去处理。因此,在调用setState后,不能立即依赖于组件状态的改变。 在你的情况中,你将mapbox gl popups保存在了React组件的状态中,当你调用remove方法时,你可能会发现popups并没有被立即移除。这是因为popups的移除是异步的,而React状态更新也是异步的。因此,你需要等待React处理完状态更新请求后再执行popups的移除操作。 你可以在setState的回调函数中执行popups的移除操作,这样就可以保证状态更新和popups的移除是同步的。代码示例如下: ```jsx function handleRemovePopup(id) { // 从popups数组中移除对应的popup const newPopups = popups.filter(popup => popup.id !== id); // 更新组件状态 this.setState({ popups: newPopups }, () => { // 在状态更新完成后,执行popups的移除操作 const popup = map.getPopup(id); if (popup) { popup.remove(); } }); } ``` 在这个示例中,我们将popups数组更新为不包含要移除的popup。在setState的回调函数中,我们首先获取要移除的popup对象,然后检查该popup对象是否存在于map中。如果存在,则执行remove方法将其从map中移除。由于回调函数会在状态更新完成后被调用,因此这里可以保证状态更新和popups的移除是同步的。 希望这个示例能够帮助你解决问题!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值