小编Zei*_*zar的帖子

Robot Framework 从类中创建两个实例而不是一个

我有一个 python 类:

from robot.api import logger
class TestClass(object):
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2
        logger.info('initialized', also_console=True)

    def print_arg1(self):
        print self.arg1

    def print_arg2(self):
        print self.arg2
Run Code Online (Sandbox Code Playgroud)

我写了一个名为“CommonKeywords.robot”的关键字文件:

*** Settings ***
Library     ../Libs/TestClass.py     arg1   arg2        WITH NAME    class1

*** Keywords ***
print arg1 class1
    class1.print_arg1

print arg2 class1
    class1.print_arg2
Run Code Online (Sandbox Code Playgroud)

我的场景文件是“scenario.robot”:

*** Settings ***
Resource    ../Keywords/CommonKeywords.robot

*** Test Cases ***
Test Prints
    print arg1 class1
Run Code Online (Sandbox Code Playgroud)

这是我的项目结构:

Test
---- Keywords
     ---- CommonKeywords.robot
---- Scenarios
     ---- scenario.robot
---- Libs
     ---- TestClass.py …
Run Code Online (Sandbox Code Playgroud)

python import robotframework

3
推荐指数
1
解决办法
8280
查看次数

如何在 Robot Framework 中设置 FireFox 的首选项

我正在尝试在机器人框架中编写一个测试用例,以从网站自动下载一个 excel 文件。我想使用机器人脚本为我的浏览器设置首选项,以便在我想要的目标目录中自动下载文件,而无需询问我!

我已经尝试过这个解决方案;但它没有用。

我还尝试设置一个现有的 Firefox 配置文件,因为说明它工作正常,但我希望能够自动调整首选项。

任何的想法?

正如@Sachin 所说,我编写了一个 python 脚本来设置 FireFox 的首选项:

from selenium import webdriver
class WebElement(object):
    @staticmethod
    def create_ff_profile(path):
        fp = webdriver.FirefoxProfile()
        fp.set_preference("browser.download.folderList", 2)
        fp.set_preference("browser.download.manager.showWhenStarting", False)
        fp.set_preference("browser.download.dir", path)
        fp.set_preference("browser.helperApps.neverAsk.saveToDisk", 'application/csv')
        fp.update_preferences()
        return fp
Run Code Online (Sandbox Code Playgroud)

并在机器人场景中使用它:

*** Settings ***
Library                 Selenium2Library
Library                 Selenium2LibraryExtensions
Library                 OperatingSystem
Library                 ../../../Libraries/WebElement.py
*** Variables ***
${profileAddress}       C:\\Users\\user\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\VdtJKHal.default
${destinationUrl}       http://www.principlesofeconometrics.com/excel.htm
${browserType}          firefox
${downloadDir}          C:\\Users\\user\\Desktop
${acceptedTypes}        text/csv/xls/xlsx
${itemXpath}            //*[text()="airline"]
*** Test Cases ***
My Test Method
    log to console  Going to …
Run Code Online (Sandbox Code Playgroud)

python selenium robotframework

3
推荐指数
1
解决办法
1万
查看次数

Windows CMD在带有sys.stdout的python的打印行末添加一个随机数

sys.stdout.write在Windows 10 64位操作系统的控制台中写了一个简单的语句。

Microsoft Windows [Version 10.0.17134.590]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\user>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.write('x')
x1
>>> sys.stdout.write('try')
try3
>>> sys.stdout.write('fooo')
fooo4
Run Code Online (Sandbox Code Playgroud)

安装的Python版本是3.7.2

python cmd stdout python-3.7

3
推荐指数
1
解决办法
42
查看次数

如何在 python 中编写多处理 Web 服务器

我在 python 中有一个简单的 web 服务器,它根据一些配置响应请求。配置定义的百分比OKNOKTimeoutNull响应:

import socket
import sys
import os
import datetime
import random
import time


# define globals
global log_file
global configs

dash = '-'
sep = '\n' + 100 * dash + '\n'
ok_message = 'HTTP/1.0 200 OK\n\n'
nok_message = 'HTTP/1.0 404 NotFound\n\n'


def initialize():
    if not os.path.isdir('./logs'):
        os.mkdir(os.path.abspath('./logs'))
    path = os.path.abspath(os.path.join(os.path.abspath('./logs'),
            datetime.datetime.now().strftime('%d-%m-%Y %H-%M-%S')))
    os.mkdir(path)
    log_file = open(os.path.join(path, 'received_packets.log'), 'a')


def finalize():
    log_file.close()


def select_resp_type():
    percents = {}
    for …
Run Code Online (Sandbox Code Playgroud)

python webserver multiprocessing

2
推荐指数
1
解决办法
6142
查看次数

如何通过引用机器人框架关键字传递参数?

我在机器人框架中有一个关键字; 它需要一个参数,对它执行一些处理并返回它:

My Keyword Name
    [Arguments]    ${arg}
    # Some process on ${arg}
    [Return]       ${arg}
Run Code Online (Sandbox Code Playgroud)

所以这将是用法:

${x} =    My Keyword Name    ${x}
Run Code Online (Sandbox Code Playgroud)

这意味着我给了${x}关键字的旧值,它返回了它的新值.

我希望通过引用进行调用My Keyword Name,因此我不需要使用赋值来设置新值${x}.我已阅读内置的UserGuide,但没有关于这个主题行.谁可以帮我这个事?

pass-by-reference keyword-argument robotframework

2
推荐指数
1
解决办法
6749
查看次数

无法在 ubuntu 18.04 上安装 psycopg2

我试图作为安装python3-psycopg2的一部分进行postgresql安装,但我得到:

The following packages have unmet dependencies:
 python3-psycopg2 : Depends: python3 (>= 3.7~) but 3.6.7-1~18.04 is to be installed
E: Unable to correct problems, you have held broken packages.
Run Code Online (Sandbox Code Playgroud)

我安装python3.8并配置python3了它的链接:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
Run Code Online (Sandbox Code Playgroud)

但我仍然得到同样的错误。

我有一个Ubuntu 18.04操作系统。

psycopg2 python-3.x

2
推荐指数
1
解决办法
2472
查看次数

set_preference不适用于FireFox配置文件

我有一个python脚本,它试图自动下载excel文件.我试图直接解决firefox配置文件,它工作正常:

path = '\\path\\to\\firefox\\default\\profile\\'
fp = webdriver.FirefoxProfile(path)
driver = webdriver.Firefox(firefox_profile=fp)
driver.maximize_window()
driver.get('url') 
driver.find_element_by_id('downloadButton').click()
time.sleep(5)
driver.close()
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以编程方式设置配置文件时,它不起作用; 还有下载弹出窗口:

fp = webdriver.FirefoxProfile()
fp.set_preference('browser.download.folderList', 2)
fp.set_preference('browser.download.manager.showWhenStarting', False)
fp.set_preference('browser.download.dir', os.getcwd())
fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv/xls/xlsx')
driver = webdriver.Firefox(firefox_profile=fp)
driver.maximize_window()
driver.get('url') 
driver.find_element_by_id('downloadButton').click()
time.sleep(5)
driver.close()
Run Code Online (Sandbox Code Playgroud)

我也改了行fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv/xls/xlsx')fp.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/vnd.ms-excel')); 但没有变化.

知道我错了什么吗?

编辑1:

我试过了

fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream")
Run Code Online (Sandbox Code Playgroud)

fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
Run Code Online (Sandbox Code Playgroud)

结果没有变化.

python firefox webdriver download selenium-webdriver

1
推荐指数
1
解决办法
5943
查看次数

For循环给出了所有列表而不是机器人框架中的一个项目

我有这个代码:

Test Check For Loop
    @{ret_val} =    Read Data From Excel    ${filename}      ${sheetname}
    log to console      ${ret_val}
    :FOR    ${item}     IN      ${ret_val}
    \   log to console      ${item}
Run Code Online (Sandbox Code Playgroud)

Read Data From Excel是我开发的其他关键词之一,它工作正常; 但我得到了这个输出:

Test Check For Loop                                           [{'key1': 'val1', 'key2': 'val2'}]
[{'key1': 'val1', 'key2': 'val2'}]
| PASS |
------------------------------------------------------------------------------
Scenario.scenario                                                     | PASS |
0 critical tests, 0 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Scenario                                                              | PASS |
0 critical tests, 0 passed, 0 failed
1 test …
Run Code Online (Sandbox Code Playgroud)

for-loop robotframework

1
推荐指数
1
解决办法
2万
查看次数

使用 kafka-python 检索主题中的消息

我已经使用kafka-python库编写了一个 python 脚本,它将消息写入和读取到kafka. 我写消息没有任何问题;kafka我可以使用控制台工具检索它们。但我无法使用我的 python 脚本读取它们。我的消费者有一个 for ,它冻结在迭代的第一行并且永远不会返回。这是我的代码:

from kafka import KafkaConsumer

consumer = KafkaConsumer(
    "my-topic",
    bootstrap_servers="localhost:9092"),
    value_deserializer=lambda v: json.dumps(v).encode("utf-8")
)

for msg in consumer:
    print(type(msg))
Run Code Online (Sandbox Code Playgroud)

消费者被创建并完全订阅;我可以看到它my-topic列在其属性的主题列表中_client

任何想法?

python apache-kafka kafka-consumer-api kafka-python

1
推荐指数
1
解决办法
9556
查看次数