python - 如何让 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,因此忽略了我要搜索的页面,该页面随后被加载。
有没有人知道如何解决这个问题?
解决方案
当您使用Selenium、IEDriverServer和Internet Explorer时,当IEDriverServer启动一个新的IE 浏览器会话时,IE 浏览器首先启动IEDriver 登录页面,然后加载请求的 url。
Incase Selenium将IEDriverServer的登录页面识别为要加载的 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")
推荐阅读
- elasticsearch - ElasticSearch中不区分大小写的搜索?
- sql - Oracle Query 列出内存中的小时数
- javascript - 获取登录用户的windows域(对于网站)
- database - 可以将 mLab 用作大型 Web 应用程序的数据库吗?
- python - 如何在 Tensorflow 中绘制精度曲线
- c++ - 如何在 ConsoleApplication 项目 C++ 中添加窗口
- docker - docker Ubuntu 镜像的用例是什么
- git - GitKraken 在树的顶部显示旧提交
- java - Java IndexOutOfBoundsException 列表错误
- c# - 如何获取内容使用 HtmlAgilityPack - C#