python脚本如何使用qtwebdriver在Qt应用程序中找到按钮?

时间:2018-04-22 11:50:59

标签: python qt selenium selenium-webdriver

我有一个带qtwebdriver的应用程序QCalculator: https://github.com/cisco-open-source/qtwebdriver/pull/27/files

我正在尝试编写简单的python测试,这将测试这个计算器, 这是我的剧本:

input

这是计算器的界面

该脚本应该点击数字“5”,但我收到了这个错误:

#!/usr/bin/env python

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Remote(
    desired_capabilities=webdriver.DesiredCapabilities.FIREFOX,
    command_executor='http://127.0.0.1:9517'
)
driver.get("qtwidget://Calculator");

btn = driver.find_elements_by_xpath("//Button[@name='5']")[0]
btn.click();

按钮的创建方式如下:(在github下面的链接中)

Traceback (most recent call last):
  File "./testCalculator.py", line 12, in <module>
    btn = driver.find_elements_by_xpath("//Button[@name='5']")[0]
IndexError: list index out of range

如何更改此代码(“//按钮[@ name ='5']”)[0]以找到按钮?

1 个答案:

答案 0 :(得分:0)

此错误消息......

    btn = driver.find_elements_by_xpath("//Button[@name='5']")[0]
IndexError: list index out of range

...意味着通过find_elements_by_xpath()方法初始化的列表空列表。因此,当您尝试通过索引 [0] 调用列表的第一个元素时,会引发

解决方案

  • 一个合适的解决方案是构建一个唯一标识元素的定位策略。您可以在此处找到有关Official locator strategies for the webdriver
  • 的详细讨论
  • 也许根据您的代码行btn = driver.find_elements_by_xpath("//Button[@name='5']")[0]标记名称应该是按钮而不是按钮