测试人社区

求助:打造自己框架1,有一个知识点没有理解

yaml文件:
data:

  • appium

  • selenium

  • requests
    #等价于{“keyword”:[“appium”,“selenium”,“request”]}
    steps:

  • webdriver:
    browser: chrome

  • get: https://ceshiren.com/

  • find_element:

    • id
    • search-button
  • click:

  • find_element:

    • id
    • search-term
  • send_keys: ${data}
    代码文件:
    ‘’’
    def load_data(path):
    #打开文件
    with open(path,encoding=‘utf-8’) as f:
    #(添加的是文件)
    return yaml.safe_load(f)
    class TestDemo:
    data_file=load_data(“test_data.yaml”)
    test_data=data_file[“data”]
    test_steps=data_file[“steps”]

    #改在数据,
    @pytest.mark.parametrize(“data”,test_data)
    def test_search(self, data):
    #改造测试步骤,遍历test_steps.yaml中的所有values
    #测试步骤数据驱动
    for step in self.test_steps:
    print(step)
    if “webdriver” in step:
    #step.get(“webdriver”).get(“browser”,“chrome”),取webdriver值,{‘browser’: ‘chrome’},
    #下一个get是取browser的值,然后如果没有这取chrome
    #又因为这个要被公共使用
    #if step.get(“webdriver”).get(“browser”,“chrome”)
    #browser区分下大小写,然后做判断
    browser=str(step.get(“webdriver”).get(“browser”,“chrome”)).lower()
    #判断,browser区分下大消息,如果browser是chrome,
    if browser==“chrome”:
    driver=webdriver.Chrome()
    elif browser==“firefox”:
    driver=webdriver.Firefox()
    else:
    print(“没有驱动的浏览器”)
    if “get” in step:
    #取出来url
    url=step.get(“get”)
    driver.get(url)
    if “find_element” in step:
    by=step.get(“find_element”)[0]

            locator=step.get("find_element")[1]
    
            current_element=driver.find_element(by, locator)
    
        if  "click" in step:
            current_element.click()
        if "send_keys" in step:
    
            value=str(step.get("send_keys"))
            value=value.replace("${data}",data)
            current_element.send_keys(value)
    

‘’’
问题:1.yaml文件中有两个find_element,而代码的最后一行current_element.send_keys(value),current_element,他的定位应该是

  • find_element:
    • id
    • search-button
      而send_keys,实际对应的定位应该是
      ** - find_element:**
      ** - id**
      ** - search-term**
      但是最终代码运行还是正确的,我对这里没太理解,麻烦老师仔细说下是怎么回事

格式化一下代码吧,这样不方便看 :joy:

怎么格式化,我有点不太会

怎么格式化呢,我从编译器里边打出来的

就是在帖子里面代码开头部分用三个` 结尾用三个` 就是键盘“1”左面那个键,就可以在帖子里面格式化代码。你帖子里面有一部分格式化了,有一部分没格式化所以不太容易看。
然后格式化可以指定语言代码 例如:
输入:
```python
from time import sleep
sleep(3)
a = 3
if a = 3:
print(a)
```
显示效果:

from time import sleep
sleep(3)
a = 3
if a = 3:
    print(a)

以上都是markdown的特性,社区帖子内容其实都是markdown文本。还有很多其它炫酷功能,可以了解一下markdown语法相关。