通过JSON文件访问Web元素信息 - Python

时间:2018-05-30 21:48:49

标签: python json selenium

我正在使用Python中的Selenium设计一个测试框架。我试图将Web元素信息分成JSON文件并从中读取到我的框架中。然后,我的测试脚本将从下面的脚本中提取,因此所有3个实体都是分开的。我刚刚开始,所以我有一个网络元素要测试。

脚本看起来像这样:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import json
from Values import strings

elements = 'elements.json'
data = json.loads(elements)


class HomeScreen:

    def __init__(self, driver):
        self.driver = driver
        self.title = WebDriverWait(self.driver.instance, 10).until(
            EC.visibility_of_element_located((
                By.CLASS_NAME, data['name'][0])))


def validate_logo_is_present(self):
    assert self.title.is_displayed()

elements.json文件如下所示,目前只有一个条目:

{
    "name": "LOGO",
    "element": "logo img-responsive",
    "type": "CLASS_NAME"
}

我想为这个特殊情况做些什么是访问" logo img-responsive"在顶部脚本的以下行中:

By.CLASS_NAME, data['name'][0])))

我不会粘贴我的测试脚本,因为这与我认为无关,但是当我运行它时,我收到以下错误:

    raise JSONDecodeError("Expecting value", s, err.value) from None
E   json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

任何想法如何解决这个问题?一般来说,将元素保存在json文件中是一个坏主意吗?我应该直接将它们嵌入到上面的顶级脚本中吗?我想使用该文件我会消除可能的冗余,但我知道它会变得冗长。

修改

如果有帮助,这就是我写JSON文件的方式:

def write_to_json(lst, fn):
    with open(fn, 'a', encoding='utf-8') as file:
        for item in lst:
            x = json.dumps(item, indent=4)
            file.write(x + '\n')


write_to_json(res, 'elements.json')

0 个答案:

没有答案