Search code examples
pythonseleniuminternet-explorerwebdriverwaitselenium-iedriver

How to make selenium wait before getting contents from the actual website which loads after the landing page through IEDriverServer and IE


driver = webdriver.Ie("C:\\IEDriverServer.exe")
driver.get(testurl)
driver.refresh()
time.sleep(5)
data = driver.find_element_by_id("__content0-value-scr")

So I'm trying to find an element by it's id using Selenium (Python) and Internet Explorer, because I'm limited to Internet Explorer due to company regulations.

My problem is as follows: on driver.get(testurl), selenium loads the page but IE first starts up with the IEDriver landing page. Only after that, it loads the requested url.

The problem here is that Selenium recognizes the IE Driver landing page as the url to be loaded and therefore ignores the page I want to search on, which gets loaded after that.

Has anyone got an idea on how to work around this?


Solution

  • When you use Selenium, IEDriverServer and Internet Explorer, while IEDriverServer initiates a new IE Browser session, IE Browser first starts up with the IEDriver landing page and then loads the requested url.

    Incase Selenium recognizes the IEDriverServer's landing page as the url to be loaded, in that case the solution would be to induce WebDriverWait for the Page Title to be equivalent to the actual page title of the AUT (Application Under Test).

    • Code Block:

      from selenium import webdriver
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      
      testurl = "https://www.facebook.com/" # replace with the url of the AUT
      driver = webdriver.Ie(executable_path=r'C:\path\to\IEDriverServer.exe')
      driver.get(testurl)
      WebDriverWait(driver, 10).until(EC.title_contains("Facebook")) # # replace with the title of the AUT
      data = driver.find_element_by_id("__content0-value-scr")