我正在使用 TChromium 组件在 Delphi XE4 中开发一个桌面应用程序来显示 Google Voice 网页。
我需要以编程方式开始调用,但找不到触发按钮后面的 javascript 代码的方法(它是一个 DIV)“CONNECT”:
TChromium 允许执行 javascript 代码,我已经设法使用 javascript 代码模拟“CALL”按钮上的点击,该代码使用显示面板的字符“c”模拟按键事件。这是有效的,因为谷歌语音有快捷方式,“c”是开始通话的有效快捷方式。我还可以使用 javascript 在输入字段中设置数字。我的主要问题是我不知道如何模拟点击“CONNECT”:
如您所见,没有 ID,没有 onClick,也没有触发连接按钮的快捷方式。
我可以使用以下代码获取对此 DIV 的引用:
document.getElementById(":87.mi").children[0].children[0].children[5].children[1].children[0].children[0].children[0].children[1];
但是不可能触发附加.click() 的任何内容。我认为这是因为 click() 将触发未定义的 onClick 方法。有什么方法可以知道当有人点击这个 div 时执行了什么 javascript 代码?
如果焦点在“要调用的号码”输入中,我可以按“TAB”导航到“要调用的电话”,然后导航到“记住选择”,最后导航到“连接”,然后按 Enter使它也起作用的关键。我尝试使用与开始时相同的代码来模拟 CALL 按钮,但这次使用 TAB(键码 9 而不是 67)并且它不起作用,因为焦点没有移动。
我尝试使用 delphi 以编程方式执行此操作,还使用 mouse_event、keybd_event、PostKeyExHWND、PostKeyEx32 和 PostMessage 但没有结果,因为焦点没有从“要调用的号码”上移开
目前唯一可用的选项是使用 SetCursorPos 通过 delphi 移动鼠标并模拟单击该按钮计算坐标,但这将是我最后选择的选项,因为我更喜欢 javascript 代码来执行此操作。
欢迎提出任何建议!
最佳答案
我建议下一个解决方案。
在必须从 View 导入的 javascript 文件中,放入下一个代码:
$(".goog-button-base-content").click(function(){
//CODE HERE
});
你在这里所做的是,每次我们按下具有该类的 div 时,你将启动“CODE HERE”中的逻辑
(抱歉我的英语不好)
希望有用。再见
关于javascript - 模拟点击DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18175963/
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl
在ruby中,你可以这样做:classThingpublicdeff1puts"f1"endprivatedeff2puts"f2"endpublicdeff3puts"f3"endprivatedeff4puts"f4"endend现在f1和f3是公共(public)的,f2和f4是私有(private)的。内部发生了什么,允许您调用一个类方法,然后更改方法定义?我怎样才能实现相同的功能(表面上是创建我自己的java之类的注释)例如...classThingfundeff1puts"hey"endnotfundeff2puts"hey"endendfun和notfun将更改以下函数定
我有一个gem,它有一个根据Rails.env的不同行为的方法:defself.envifdefined?(Rails)Rails.envelsif...现在我想编写一个规范来测试这个代码路径。目前我是这样做的:Kernel.const_set(:Rails,nil)Rails.should_receive(:env).and_return('production')...没关系,只是感觉很丑。另一种方法是在spec_helper中声明:moduleRails;end而且效果也很好。但也许有更好的方法?理想情况下,这应该有效:rails=double('Rails')rails.sho
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我有一个rspec模拟对象,一个值赋给了属性。我正在努力在我的rspec测试中满足这种期望。只是想知道语法是什么?代码:defcreate@new_campaign=AdCampaign.new(params[:new_campaign])@new_campaign.creationDate="#{Time.now.year}/#{Time.now.mon}/#{Time.now.day}"if@new_campaign.saveflash[:status]="Success"elseflash[:status]="Failed"endend测试it"shouldabletocreat
我正在尝试测试命令行工具的输出。如何使用rspec来“伪造”命令行调用?执行以下操作不起作用:it"shouldcallthecommandlineandreturn'text'"do@p=Pig.new@p.should_receive(:run).with('my_command_line_tool_call').and_return('resulttext')end如何创建stub? 最佳答案 使用newmessageexpectationsyntax:规范/虚拟规范.rbrequire"dummy"describeDummy
我想在每次访问url/code时运行一个脚本(code.rb)。如何运行脚本?require'sinatra'get'/'do#runthescriptend 最佳答案 要么fork另一个进程:system('rubycode.rb')...或者简单地将脚本加载到当前上下文中:load'code.rb'#*not*require 关于ruby-Sinatra:点击URL时运行ruby代码,我们在StackOverflow上找到一个类似的问题: https: