验证吐司消息

时间:2019-06-26 11:59:45

标签: android python selenium appium

我正在尝试找出如何检查烤面包机的消息。 我不是开发人员,并且对自动化测试非常陌生。 我使用的是python,所以有可能有详细的python代码,可用来检查android设备上的烤面包机消息。

谢谢。

3 个答案:

答案 0 :(得分:0)

通常,黑白吐司消息与应用中的其他任何UI元素都没有区别,以进行搜索和操作:

 self.driver.find_element_by_id("your_app_package/your_app_toast_id")

但是,我几次遇到一个问题,即吐司出现和消失的速度太快,以至于Appium无法捕获:它在Android Accessibility层中是不可见的,因此您无法获取页面源并在那里进行检查。

幸运的是,使用新的Espresso驱动程序,您可以调用测试应用程序的内部组件(包括吐司)并进行检查。这是更可靠的方法,但是需要花费时间set up

答案 1 :(得分:0)

  1. 相关的GroupBy.transform类似于:

    toast_text = wait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//android.widget.Toast"))).get_attribute("text")
    print(toast_text)
    #do whatever you need with the "toast_text" string
    
  2. 由于XPath Expression的性质,它并不总是可用/可见,因此您必须Toast

建议的代码:

class PublicationAuthorsSchema(Schema):
    name = fields.String()
    role = fields.String(validate=OneOf(choices=['author', 'inventor']))

class PublicationSchema(Schema):
    authors = fields.List(fields.Nested(PublicationAuthorSchema))
    title = fields.String()

class BookSchema(PublicationSchema):
    # Something here i would like to limit authors role to 'author' value
    publisher = fields.String()

class PatentSchema(PublicationSchema):
    # Something here i would like to limit authors role to 'inventor' value
    country_restrictions = fields.List(fields.String)

...

def publication_loader(json_data):
  schema_class = PublicationSchema
  if json_data.get('$schema') == 'http://example.org/patent_v1.0.0.json':
    schema_class = PatentSchema
  elif json_data.get('$schema') == 'http://example.org/book_v1.0.0.json':
    schema_class = BookSchema

  schema = schema_class()
  # I tried to alter schema here ... 
  result = schema.load(json_data)
  if result.errors:
    raise MarshmallowError(result.errors)
  return result.data 

...

data = {
  '$schema': 'http://example.org/book_v1.0.0.json',
  'title': 'Programming with python',
  'authors': [
    {
      'name': 'John Doe',
      'role': 'author'
    },{
      'name': 'Harvey Smith',
      'role': 'inventor'
    }
  ]
}
result = publication_loader(data)
#  I would like than a ValidationError will be raised because, authors of 'book' could only have 'author' role
#  The Author 'Harvey Smith' should be in error because he is tagged as 'inventor' (stupid example, i admit it)

答案 2 :(得分:0)

你好,试试下面的 Toast 消息代码。 如果你有不止一个吐司,那么请。更改索引号。

toastMsg = wait.until(lambda x:x.find_element_by_xpath("//android.widget.Toast[1]"))
print(toastMsg.get_attribute("name"))