+2
Save

Selenium and a Time Clock Website

EDIT: I figured this out by using a mix of Selenium and PYAutoGUI. Basically where Selenium fails, PYAutoGUI will sweep in and save the day. I now have a sweet setup where I swipe my phone over a NFC tag, it sends a message to EventGhost that then triggers this script. A lot easier than logging into a stupid website and clocking in/out!!!

I posted this to Reddit but didn't get but one response. Hoping to find someone here who has a little experience with Selenium.

I'm trying to automate my daily clock in/out via Python and Selenium. I currently have the web browser (IE) opening, all input going in just fine and even the log on process. When I get to the next screen, I'm having a hard time finding the "Clock In/Out" button element. This button is supposed to open a small pop up window with some clock in options, then I can click Submit when complete.

Here is the HTML code of the button:

<a href="/qqest/time/timecard.asp" onclick = "window.open('/qqest/Time/timePunch.asp?punchtype=clockinout&ActiveEmployeeID=149','popuptime','scrollbars=yes,screenX=0,screenY=0,left='+gfnGetWidth(410)+', top='+gfnGetHeight(435)+', width=410, height=435, resizable=yes');"><img src='/qqest/images/buttons/InOut.gif' border=0 hspace=3 onmouseover="this.src='/qqest/images/Buttons/InOut-H.gif';" onmouseout="this.src='/qqest/images/Buttons/InOut.gif';" alt="In/Out"></a>

My Python Script:

from selenium import webdriver
import time
#driver = webdriver.Chrome('C:\chromedriver.exe')
driver = webdriver.Ie('C:\IEDriverServer.exe')
driver.get('http://time.system-integrations.com/')

try:
    username = driver.find_element_by_name('username')
    username.send_keys('USERNAME')

    password = driver.find_element_by_name('Password')
    password.send_keys('PASSWORD')

    code = driver.find_element_by_name('CompanyCode')
    code.send_keys('CODE')

    login = driver.find_element_by_name('Login')
    login.click()

    inoutButton = driver.find_element_by_xpath("//img[contains(@src, 'InOut.gif')]/parent::a")
    inoutButton.click()

except:
    print('Nope')

I've tried to find this element by HREF and IMG, but it's always a no go (hence I get the "nope" in the Python console). Is there a better way to do this? I've started to possibly add in PyAutoGUI to simulate mouse clicks but I'd rather do it the Selenium way if possible. Help!!!

10 years ago by sixstorm with 1 comments

Join the Discussion

  • Auto Tier
  • All
  • 1
  • 2
  • 3
Post Comment
  • tefids
    +1

    I am not familiar with Selenium, but I have done some IE automation using the COM interface from VBA (yuck :( ). Anyway, one issue I ran into is that the COM functions for finding tags will not find elements that are in iframes. You first have to get a reference to the iframe, and then run the search function again on the iframe. Perhaps you are running into something similar?