1

我正在尝试通过 python 以编程方式操作内部网站。它实际上在大多数情况下都有效,但是在每个框的值发生更改后,我一直试图触发 POST 请求。我可以在 Chrome 调试器中看到,在我单击其中一个选择框中的值后发出了 POST 请求。

例如,有三个选择框,每个选择框都依赖于最后一个。

  1. 在选择框 A 中选择一个值时,选择框 B 将通过 AJAX 填充。
  2. 当在选择框 B 中选择一个值时,选择框 C 将通过 AJAX 填充。

选择框 A 中的项目在页面加载时静态加载。我可以遍历那些没有问题的。

import win32com.client
ie = win32com.client.DispatchEx("InternetExplorer.Application")
ie.Navigate("...")

# stuff to see if the page loaded...

boxAObj = doc.getElementById("selectBoxA")
for i in range(1,boxAObj):
    # I've tried this multiple ways - none have triggered the request
    boxAObj.options.selectedIndex = i

    boxBObj = doc.getElementById("selectBoxB")
    print boxBObj.length

print 语句总是打印 1。在选择框“Select...”中有一个默认值,所以长度为 1。

以下是该网站的一些图像以显示该行为。第一个是在新页面加载之后,鼠标或通过 javascript 没有选择任何内容。


重新加载


在这张图片中,我使用 javascript 以编程方式在选择框 A 中选择了一个项目,但在选择框 B 中没有加载任何内容:


Javascript 选择了一个值


在这张图片中,我在选择框 A 中单击了相同的值,您可以看到选择框 B 按预期填充:


已点击


最后一条信息是选择框具有分配给它们的 onchange 事件。这是解决这个问题的关键吗?


改变


编辑:我刚刚发现一个帖子显示来自 javascript 的 obj.onchange() 应该可以解决问题,它适用于浏览器,但不适用于 python。我应该尝试评估python中的函数吗?我已经尝试了一些东西,但还没有任何效果。见下文:


来自python的onchange


4

0 回答 0