首页 > 解决方案 > 如何让 selenium 在通过 IEDriverServer 和 IE 从登录页面后加载的实际网站获取内容之前等待

问题描述

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

因此,我尝试使用 Selenium (Python) 和 Internet Explorer 通过其 id 查找元素,因为由于公司规定,我仅限于 Internet Explorer。

我的问题如下: on driver.get(testurl), selenium 加载页面但 IE 首先启动 IEDriver 登录页面。只有在那之后,它才会加载请求的 url。

这里的问题是 Selenium 将 IE 驱动程序登录页面识别为要加载的 url,因此忽略了我要搜索的页面,该页面随后被加载。

有没有人知道如何解决这个问题?

标签: pythonseleniuminternet-explorerwebdriverwaitselenium-iedriver

解决方案


当您使用SeleniumIEDriverServerInternet Explorer时,当IEDriverServer启动一个新的IE 浏览器会话时,IE 浏览器首先启动IEDriver 登录页面,然后加载请求的 url。

Incase SeleniumIEDriverServer的登录页面识别为要加载的 url,在这种情况下,解决方案将导致WebDriverWait页面标题等同于 AUT (Application Under Test) 的实际页面标题

  • 代码块:

    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")
    

推荐阅读