Hello everyone,
I am having one heck of an issue with a webbrowser control I am using. As part of my job, I am working on creating a tool to automate an older system that we still use. The part that is being automated is web-based, and the group running the automation does not have access to any automation tools like QTP. In order to give them something they can use, the idea was to build an application just for them. In this application, I have everything working perfectly, with the exception of the most important part: the entry of a policy number. The policy number goes into a textbox, and then the user presses a button. A part of the automation sequence involves the use of a timer.
If I manually navigate to the appropriate page and put the .SetAttribute statement in a button action on my form, it works perfectly fine. However, if I put the .SetAttribute statement anywhere that is being controlled by the timer ticking, it does not work.
So, this works:
but this does not:
As a note, I do not have the Select statement in the Tick action; I have it in its own little sub. However, since it functions the same way no matter where it is, and to save space, I combined everything here. Also, at the time of the timer firing and setting things into motion to enter the policy number, the page is already fully loaded, so I don't think it is an issue with that, though I could be wrong.
It does not throw an error. The "1234567" above is passed in as a string, and doing a watch on it at run-time does show that the value is actually in there. It just seems like the .SetAttribute is not registering on the textbox. I have tried a few things ranging from "what-if" all the way to "that-is-so-dumb-it-just-might-work." Nothing seems to do the trick. I have tried sleeping everything for a few seconds just to see if there was an issue there. I have tried issuing the .SetAttribute command a few times in a row thinking it just wasn't taking the first time. Since setting .Focus() didn't seem to work for it, I even went so far as using SendKeys to move focus to the textbox on one attempt and API calls for mouse clicks (to click inside of the textbox) on another attempt. As a last crazy attempt, I had the Select statement doing a .PerformClick on btnTest (which works if I navigate to the page manually).
Would any of you have any ideas for me to try on this? I am open to trying anything that might help. If it works every time, I don't even care if it is such an obscure fix that it looks completely crazy in the code.
Thanks for looking at this!
I am having one heck of an issue with a webbrowser control I am using. As part of my job, I am working on creating a tool to automate an older system that we still use. The part that is being automated is web-based, and the group running the automation does not have access to any automation tools like QTP. In order to give them something they can use, the idea was to build an application just for them. In this application, I have everything working perfectly, with the exception of the most important part: the entry of a policy number. The policy number goes into a textbox, and then the user presses a button. A part of the automation sequence involves the use of a timer.
If I manually navigate to the appropriate page and put the .SetAttribute statement in a button action on my form, it works perfectly fine. However, if I put the .SetAttribute statement anywhere that is being controlled by the timer ticking, it does not work.
So, this works:
VB.NET:
Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click
Me.wbPrestige.Document.Window.Frames("WORKSPACE").Document.GetElementById("policynumber").SetAttribute("value", "1234567")
End Sub
but this does not:
VB.NET:
Private Sub timerLoad_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timerLoad.Tick
Select Case currentStatus
Case Status.wait_for_retrieving
Me.wbPrestige.Document.Window.Frames("WORKSPACE").Document.GetElementById("policynumber").SetAttribute("value", "1234567")
'other case statements
End Sub
As a note, I do not have the Select statement in the Tick action; I have it in its own little sub. However, since it functions the same way no matter where it is, and to save space, I combined everything here. Also, at the time of the timer firing and setting things into motion to enter the policy number, the page is already fully loaded, so I don't think it is an issue with that, though I could be wrong.
It does not throw an error. The "1234567" above is passed in as a string, and doing a watch on it at run-time does show that the value is actually in there. It just seems like the .SetAttribute is not registering on the textbox. I have tried a few things ranging from "what-if" all the way to "that-is-so-dumb-it-just-might-work." Nothing seems to do the trick. I have tried sleeping everything for a few seconds just to see if there was an issue there. I have tried issuing the .SetAttribute command a few times in a row thinking it just wasn't taking the first time. Since setting .Focus() didn't seem to work for it, I even went so far as using SendKeys to move focus to the textbox on one attempt and API calls for mouse clicks (to click inside of the textbox) on another attempt. As a last crazy attempt, I had the Select statement doing a .PerformClick on btnTest (which works if I navigate to the page manually).
Would any of you have any ideas for me to try on this? I am open to trying anything that might help. If it works every time, I don't even care if it is such an obscure fix that it looks completely crazy in the code.
Thanks for looking at this!