我试图从所有正在运行的IE实例中获取一些数据,以从页面源中钩住已记录的用户名,我尝试使用selenium来使用户从selenium中运行IE,然后当用户登录时我得到了Username和它仅在第一个选项卡中有效,如果用户从另一个窗口/选项卡进入登录页面,我将无法捕获。看起来带有IE window_handles的硒不能很好地工作。 在Google上搜索时,我可能已经找到了对我来说更好的东西,可以在所有运行的标签页/窗口中从互联网浏览器中获取一些数据。 在this link之后,我可以获取页面标题和位置URL,它还说明了如何使页面导航到另一个URL。 现在我找不到的是如何获取页面源代码。
from win32com.client import Dispatch
from win32gui import GetClassName
ShellWindowsCLSID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}'
ShellWindows = Dispatch ( ShellWindowsCLSID )
for sw in ShellWindows :
if GetClassName ( sw . HWND ) == 'IEFrame' :
print(sw)
print(sw.LocationName)
print(sw.LocationURL)
#sw.Document.Location = "http://python.org" navigating to another url
print(50 * '-')
答案 0 :(得分:0)
我从this link找到了一个解决方案,因此基本上可以得到页面Source
from win32com.client import Dispatch
from win32gui import GetClassName
ShellWindowsCLSID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}'
ShellWindows = Dispatch ( ShellWindowsCLSID )
for sw in ShellWindows :
if GetClassName ( sw . HWND ) == 'IEFrame' :
#print the source
print(sw.Document.body.outerHTML)
#get all elements
elements = sw.Document.all
#get all inputs
inputs = [x for x in elements if x.tagName == "INPUT"] # tag name is always uppercase
#get all buttons
buttons = [x for x in elements if x.tagName == "BUTTON"]
#get by class name
rows = [x for x in elements if "row" in x.className.split(' ')]
#get by id
username = [x for x in elements if x.getAttribute("id") == "username"]
分析IEC.py文件,您可以设置输入值或单击按钮等。