用python获取的c#软件窗口的控件ho柄是随机的,怎么处理?

Python015

用python获取的c#软件窗口的控件ho柄是随机的,怎么处理?,第1张

句柄随机”我理解你的意思是:句柄的 int 值是随机的,这个意思吧。

嘛,多数情况下,还是可以通过类名或者别的手段来获取句柄的。通过整数值来获取句柄有时候反而更少些。

当时我也试过通过 Python 去操控软件自动化,但是我却无法获取到其数值的更新,即便我获取到目标窗口的句柄。因为有些时候一些操作需要判断相关字样采取不同方式的。或许是我见识少吧,如果确实有相关方式解决这个问题的话也请告诉我一下。

后来我直接放弃掉这种操控软件的方式自动化。采取了抓包模拟(本质和爬虫一样)的方式来自动化了。当然,效果是更加理想的。不过有时候弄参数比较费时间和精力,不如操控控件自动化来得简单直接。

-----------------

回到你说的问题上吧,句柄变化的话通过别的方式识别出来,比如其类名。有一个软件叫 LookHandles,可以方便查看句柄相关信息。

--------------

有什么方法可实现python自动化操作C#开发的软件?

pyautogui, win32api 之类的。

首先,假设通过Firefox()浏览器定向爬取CSDN首页导航栏信息,审查元素代码如下图所示,在div class="menu"路径的ul、li、a下,同时可以定位ul class="clearfix"。

代码如下所示:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# coding=utf-8

import os

from selenium import webdriver

#PhantomJS无界面浏览器

##driver = webdriver.PhantomJS(executable_path="G:\phantomjs-1.9.1-windows\phantomjs.exe")

#打开火狐浏览器

driver = webdriver.Firefox()

url = "http://www.csdn.net/"

driver.get(url)

#xpath路径定位导航栏

elem_dh = driver.find_elements_by_xpath("//div[@class='menu']/ul/li/a")

for elem in elem_dh:

print elem.text#获取正文

print elem.get_attribute('href') #获取属性值

然后转换成chrome浏览器,只需要在"C:\Program Files (x86)\Google\Chrome\Application\"路径下放置个chromedriver.exe驱动,再进行调用即可,代码如下所示:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

# coding=utf-8

import os

from selenium import webdriver

#PhantomJS无界面浏览器

##driver = webdriver.PhantomJS(executable_path="G:\phantomjs-1.9.1-windows\phantomjs.exe")

#打开火狐浏览器

#driver = webdriver.Firefox()

#谷歌浏览器

chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"

os.environ["webdriver.chrome.driver"] = chromedriver

driver = webdriver.Chrome(chromedriver)

#WebDriverException: Message: unknown error: session deleted because of page crash

url = "http://www.csdn.net/"

driver.get(url)