Using Selenium with AutoHotkey- Cross browser automation!
Re: Using Selenium with AutoHotkey- Cross browser automation!
SeleniumBasic is a Visual Basic selenium wrapper program providing the COM interface method that AHK uses to control it.
Re: Using Selenium with AutoHotkey- Cross browser automation!
- I wrote a script to get the webpage titles/urls in Chrome v69.
- Some issues: it doesn't know how many tabs there are, the order is unspecified, it activates each tab (although very quickly).
- If anyone can improve this, I would be grateful.
- Links:
[post by CH HAN and response by malcev]
Using Selenium with AutoHotkey- Cross browser automation! - Page 4 - AutoHotkey Community
https://autohotkey.com/boards/viewtopic ... 49#p231849
[get tab count and other tab info]
Firefox/Chrome, get tab names/focus tab - AutoHotkey Community
https://autohotkey.com/boards/viewtopic.php?f=6&t=26947
- Btw is anyone having any success with Firefox and SeleniumBasic? It says here that people have to downgrade to Firefox v46.0.1 to use it with SeleniumBasic.
FireFox, Chrome, Edge, Opera Drivers are not working · Issue #133 · florentbr/SeleniumBasic · GitHub
https://github.com/florentbr/SeleniumBasic/issues/133
- Also, it looks like there has been no activity since Mar 2, 2016.
Release SeleniumBasic v2.0.9.0 · florentbr/SeleniumBasic · GitHub
https://github.com/florentbr/SeleniumBa ... g/v2.0.9.0
- Some issues: it doesn't know how many tabs there are, the order is unspecified, it activates each tab (although very quickly).
- If anyone can improve this, I would be grateful.
Code: Select all
;[Google Chrome + SeleniumBasic installation instructions]
;Using Selenium with AutoHotkey- Cross browser automation! - AutoHotkey Community
;https://autohotkey.com/boards/viewtopic.php?f=7&t=32323&p=151996#p151996
w:: ;chrome + selenium basic - open urls
Loop, 3
{
Run, % "chrome.exe --remote-debugging-port=9222 https://en.wikipedia.org/wiki/" Chr(64+A_Index)
Sleep, 800
}
return
q:: ;chrome + selenium basic - get titles/urls
vOutput := ""
oDriver := ChromeGet()
Loop, 3
{
vOutput .= oDriver.Window.Title "`r`n" oDriver.Url "`r`n`r`n"
oDriver.SwitchToNextWindow ;change tab
}
MsgBox, % Clipboard := RTrim(vOutput, "`r`n") "`r`n"
return
;[ChromeGet function]
;note: start Chrome with: chrome.exe --remote-debugging-port=9222
;Using Selenium with AutoHotkey- Cross browser automation! - Page 2 - AutoHotkey Community
;https://autohotkey.com/boards/viewtopic.php?f=7&t=32323&p=181299#p181299
;slight modification by jeeswg of ChromeGet() by tmplinshi
ChromeGet(IP_Port:="127.0.0.1:9222")
{
local
driver := ComObjCreate("Selenium.ChromeDriver")
driver.SetCapability("debuggerAddress", IP_Port)
driver.Start()
return driver
}
[post by CH HAN and response by malcev]
Using Selenium with AutoHotkey- Cross browser automation! - Page 4 - AutoHotkey Community
https://autohotkey.com/boards/viewtopic ... 49#p231849
[get tab count and other tab info]
Firefox/Chrome, get tab names/focus tab - AutoHotkey Community
https://autohotkey.com/boards/viewtopic.php?f=6&t=26947
- Btw is anyone having any success with Firefox and SeleniumBasic? It says here that people have to downgrade to Firefox v46.0.1 to use it with SeleniumBasic.
FireFox, Chrome, Edge, Opera Drivers are not working · Issue #133 · florentbr/SeleniumBasic · GitHub
https://github.com/florentbr/SeleniumBasic/issues/133
- Also, it looks like there has been no activity since Mar 2, 2016.
Release SeleniumBasic v2.0.9.0 · florentbr/SeleniumBasic · GitHub
https://github.com/florentbr/SeleniumBa ... g/v2.0.9.0
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
Re: Using Selenium with AutoHotkey- Cross browser automation!
You can do it like this:it doesn't know how many tabs there are
Code: Select all
loop % oDriver.Windows.Count
msgbox % oDriver.Windows.Item(A_Index).Title "`n" oDriver.Url
A I know it is impossible to get info from tab without activating it using selenium.it activates each tab
The order does not depend on position order, but depends from switch order.the order is unspecified
For example if You switch 1-2-3, tab index of number 3 will be 1 and number 1 will be 3.
As a workaround You can compare each tab position through iaccessible interface.
-
- Posts: 103
- Joined: 15 Jul 2016, 19:57
Re: Using Selenium with AutoHotkey- Cross browser automation!
I just started messing with this Selenium stuff last night. So far, it works great. I'm hoping I'll be allowed to use it on my work computer to automate a bunch of the useless crap we have to go through to complete the simplest of tasks. Anyhow, I'm trying to mash up a couple of scripts from earlier in this thread and I'm having a little trouble getting what I want. When I run this, I want it to first look and see if I already have Chrome open, and if so, use the existing window. If Chrome is not currently running, run it and go to the site I need. This is what I have:
If I already have Chrome running, it works okay -- it goes to my most recently tab and opens the new url there (which is not really ideal -- I'd rather open a new tab in most cases, but I'll deal with that part later). But if I don't have Chrome running yet, nothing happens. If I manually open Chrome after trying to run the script, the script will pick up at that point and hijack a tab.
I have tried every version of the if/else statement above I can think of -- If !WinExist, switching the order of the statements, only having one of the statements (If but no else).
Code: Select all
#!2::
If WinNotExist, ahk_exe chrome.exe {
Run,chrome.exe --remote-debugging-port=9222
}
Else {
WinActivate, ahk_exe chrome.exe
}
driver := ComObjCreate("Selenium.ChromeDriver")
driver.SetCapability("debuggerAddress", "127.0.0.1:9222")
driver.Get("https://www.bing.com")
MsgBox, % driver.Title
Return
If I already have Chrome running, it works okay -- it goes to my most recently tab and opens the new url there (which is not really ideal -- I'd rather open a new tab in most cases, but I'll deal with that part later). But if I don't have Chrome running yet, nothing happens. If I manually open Chrome after trying to run the script, the script will pick up at that point and hijack a tab.
I have tried every version of the if/else statement above I can think of -- If !WinExist, switching the order of the statements, only having one of the statements (If but no else).
-
- Posts: 103
- Joined: 15 Jul 2016, 19:57
Re: Using Selenium with AutoHotkey- Cross browser automation!
Immediately after posting I thought of another thing to try -- IfWinNotExist -- which worked. I wasn't going to bother with it since the documentation said it's deprecated, but Win[Not]Exist() didn't work either, so I thought, why not?
So now I at least have this functioning pretty well:
So now I at least have this functioning pretty well:
Code: Select all
#!2::
IfWinNotExist, ahk_exe chrome.exe
{
Run,chrome.exe --remote-debugging-port=9222
}
Else
{
WinActivate, ahk_exe chrome.exe
}
driver := ComObjCreate("Selenium.ChromeDriver")
driver.SetCapability("debuggerAddress", "127.0.0.1:9222")
driver.AddArgument("--user-data-dir=C:\Users\Paige\AppData\Local\Google\Chrome\User Data\Default") ; Use local chrome profile
driver.AddArgument("disable-infobars") ;disable notification "chrome is being controlled by automated test software"
driver.SetProfile("C:\Users\Paige\AppData\Local\Google\Chrome\User Data\Default") ;set profile path
driver.Get("https://www.bing.com")
MsgBox, % driver.Title
Return
Re: Using Selenium with AutoHotkey- Cross browser automation!
Hello,
there is a promising new toy, especially for (but not only) Firefox users (like me):
intoli/remote-browser: A low-level browser automation framework built on top of the Web Extensions API standard.
And it can connect to an already running browser!
No further infos yet, I'm too excited!
Greetings
hotkeyguy
there is a promising new toy, especially for (but not only) Firefox users (like me):
intoli/remote-browser: A low-level browser automation framework built on top of the Web Extensions API standard.
And it can connect to an already running browser!
No further infos yet, I'm too excited!
Greetings
hotkeyguy
Re: Using Selenium with AutoHotkey- Cross browser automation!
Hi @Joe Glines
Thanks you for all this stuff you give on threads and website...
I create some functions to simplify IE automantion: https://autohotkey.com/boards/viewtopic ... 27#p249027
Could be usefull for someone here
Thanks you for all this stuff you give on threads and website...
I create some functions to simplify IE automantion: https://autohotkey.com/boards/viewtopic ... 27#p249027
Could be usefull for someone here
-
- Posts: 4
- Joined: 26 Sep 2017, 19:10
Re: Using Selenium with AutoHotkey- Cross browser automation!
Hi,
I've been following along with Joe Glines' tutorial and have installed SeleniumBasic and chromedriver under Joe's direction and have them under /Program Files/.
However, when I try to run a test script to launch chrome (See: https://p.ahkscript.org/?p=c9351c88) I get an error on line 4 that states "The system cannot find the file specified"
Why is this? Have I missed something? Thanks!
I've been following along with Joe Glines' tutorial and have installed SeleniumBasic and chromedriver under Joe's direction and have them under /Program Files/.
However, when I try to run a test script to launch chrome (See: https://p.ahkscript.org/?p=c9351c88) I get an error on line 4 that states "The system cannot find the file specified"
Why is this? Have I missed something? Thanks!
Re: Using Selenium with AutoHotkey- Cross browser automation!
Code: Select all
#SingleInstance, Force
Del::
driver := ComObjCreate("Selenium.ChromeDriver") ; Start with Chrome
driver.Get("http://duckduckgo.com/") ; Navigate to a webpage
MsgBox here
return
-
- Posts: 4
- Joined: 26 Sep 2017, 19:10
Re: Using Selenium with AutoHotkey- Cross browser automation!
Code: Select all
#SingleInstance, Force
Del::
driver := ComObjCreate("Selenium.ChromeDriver") ; Start with Chrome
driver.Get("http://duckduckgo.com/") ; Navigate to a webpage
MsgBox here
return
- Sabestian Caine
- Posts: 528
- Joined: 12 Apr 2015, 03:53
Re: Using Selenium with AutoHotkey- Cross browser automation!
Hello dear Joe Glines.Joe Glines wrote: ↑08 Dec 2017, 19:48@CH HAN- thanks for publishing that! I made some minor tweaks and demonstrate it's usage here.
Code: Select all
driver:= ComObjCreate("Selenium.CHROMEDriver") ;Chrome driver driver.Get("http://the-automator.com") ;********************find and click text*********************************** keyword:="Continue reading" ; keyword you want to find- Note Case sensitive if(driver.FindElementByXPath("//*[text() = '" keyword "']")) driver.FindElementByXPath("//*[text() = '" keyword "']").click()
Sir, I am trying to automate chrome by selenium and i want to get the URL from a button or link in a webpage. I am unable to retrieve the URL from a specific button or link in a webpage. For this i have asked a question in AutoHotKey help form. The link of my question is this-
https://autohotkey.com/boards/viewtopic ... 76&t=60232
I request you to please solve this issue. Thanks a lot sir...
I don't normally code as I don't code normally.
- Sabestian Caine
- Posts: 528
- Joined: 12 Apr 2015, 03:53
Re: Using Selenium with AutoHotkey- Cross browser automation!
Problem solved sir!!!!Joe Glines wrote: ↑08 Dec 2017, 19:48@CH HAN- thanks for publishing that! I made some minor tweaks and demonstrate it's usage here.
Code: Select all
driver:= ComObjCreate("Selenium.CHROMEDriver") ;Chrome driver driver.Get("http://the-automator.com") ;********************find and click text*********************************** keyword:="Continue reading" ; keyword you want to find- Note Case sensitive if(driver.FindElementByXPath("//*[text() = '" keyword "']")) driver.FindElementByXPath("//*[text() = '" keyword "']").click()
this is working-
Code: Select all
MsgBox % driver.findElementsByClass("forumtitle").item[1].Attribute("href")
I don't normally code as I don't code normally.
-
- Posts: 205
- Joined: 19 Apr 2018, 00:24
Re: Using Selenium with AutoHotkey- Cross browser automation!
Please help...
Code: Select all
driver := ComObjCreate("Selenium.ChromeDriver")
driver.AddArgument("--disable-infobars")
driver.AddArgument("--start-maximized")
driver.Get("https://www.google.com")
driver.ExecuteScript("window.open();")
driver.SwitchToNextWindow
driver.Get("https://yandex.ru")
w::
;"https://www.google.com"
MsgBox % driver.findElementsByTag("input").item[2].Attribute("value")
return
q::
; "https://yandex.ru"
MsgBox % driver.findElementsByTag("input").item[2].Attribute("value")
return
Re: Using Selenium with AutoHotkey- Cross browser automation!
How do I click elements inside an iframe?
Re: Using Selenium with AutoHotkey- Cross browser automation!
use:
Code: Select all
driver.SwitchToFrame("iframeNameHere")
The trick is to always start at the base document and switch to the next frame and then the next (if needed) you can not jump over iframes/frames.
Imagine a tree that you have to go from the trunk and up every branch to your destination but you cant jump across branches,
When you want to go back to the base document use:
Code: Select all
driver.SwitchToDefaultContent()
HTH
Re: Using Selenium with AutoHotkey- Cross browser automation!
Thank you very much. The iframe doesn't have a name but it is the only iframe in the page. I use driver.SwitchToFrame(0) to switch to the frame and it works. Thanks.Xtra wrote: ↑08 May 2019, 12:45use:And then click the element like normal.Code: Select all
driver.SwitchToFrame("iframeNameHere")
The trick is to always start at the base document and switch to the next frame and then the next (if needed) you can not jump over iframes/frames.
Imagine a tree that you have to go from the trunk and up every branch to your destination but you cant jump across branches,
When you want to go back to the base document use:Overall its very simple compared to IE.Code: Select all
driver.SwitchToDefaultContent()
HTH
Re: Using Selenium with AutoHotkey- Cross browser automation!
Hi
Loving Selenium, know I've learnt xPath it's really powerful. Joe, your tutorials have been fantastic help over a very long night!
Couple of questions
How do you handle Pop-Up Alerts. I've seen this:
but think thats java as it doesnt work in AHK, and I cant find the corresponding command to use in AHK.
Also, can you set an implicit wait. Again, according to https www.guru99.com /implicit-explicit-waits-selenium.html Broken Link for safety it should look like
Any help much appreciated - my project is nearly there but it keeps timing out, and I cant deal with those pop ups!
W
Loving Selenium, know I've learnt xPath it's really powerful. Joe, your tutorials have been fantastic help over a very long night!
Couple of questions
How do you handle Pop-Up Alerts. I've seen this:
Code: Select all
driver.switchTo().alert().accept();
Also, can you set an implicit wait. Again, according to https www.guru99.com /implicit-explicit-waits-selenium.html Broken Link for safety it should look like
Code: Select all
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS)
W
Re: Using Selenium with AutoHotkey- Cross browser automation!
Just search Seleniumbasic manual for your commands.
Re: Using Selenium with AutoHotkey- Cross browser automation!
I normally use an explicit wait. The syntax below seems to work fine with Autohotkey and Selenium. This line waits up to 30 seconds for the element to appear and be clickable. Hopefully it will work for you.
myDynamicElement := (new WebDriverWait(driver, 30)).until(ExpectedConditions.elementToBeClickable(driver.executeScript("document.getElementById('ScanButton')")))
myDynamicElement := (new WebDriverWait(driver, 30)).until(ExpectedConditions.elementToBeClickable(driver.executeScript("document.getElementById('ScanButton')")))
Re: Using Selenium with AutoHotkey- Cross browser automation!
I was trying to open a new tab, but the popup blocker blocks it.
I tried adding the disable-popup-blocking, but without succes.
Does anybody knows how to disable the popup blocking?
driver.AddArgument("--disable-popup-blocking")
driver.ExecuteScript("window.open();")
I tried adding the disable-popup-blocking, but without succes.
Does anybody knows how to disable the popup blocking?
driver.AddArgument("--disable-popup-blocking")
driver.ExecuteScript("window.open();")
Who is online
Users browsing this forum: No registered users and 19 guests