小编Zei*_*zar的帖子

Python属性错误:对象没有属性'self'

我在Python中的类继承有问题; 也许它与继承无关,但我没有其他想法.我正在使用selenium web-driver.这是我使用的代码:

from selenium import webdriver
class UIInterface(object):
    def __init__(self):
        self.driver = webdriver.Ie()
        self.driver.get('URL')

    def parentMethod(self, itemClassName = ''):
        allElements = self.getAllElements()
        return [el for el in allElements if el.get_attribute('type') == 'checkbox']

    def getAllElements(self):
        return self.driver.find_elements_by_tag_name('input')

class InterfaceChild(UIInterface):
    def __init__(self):
        super(InterfaceChild, self).__init__()


    def childMethod(self):
        returnedList = self.parentMethod(itemClassName = 'SomeClassName')
        for item in returnedList:
            print item.get_attribute('innerHTML')
Run Code Online (Sandbox Code Playgroud)

这段代码给我一个错误的行returnedList = self.parentMethod(itemClassName = 'SomeClassName'); 错误描述是这样的:

(<type 'exceptions.AttributeError'>, AttributeError("'InterfaceChild' object has no attribute 'self'",), <traceback object at 0x000000000418E5C8>)
Run Code Online (Sandbox Code Playgroud)

我想这可能与遗传有关,所以我试图把parentMethodgetAllElements …

python selenium exception self attributeerror

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

Docker文件在docker compose build上传递环境

我写了一个Dockerfile使用两个参数:

FROM jessie
MAINTAINER Zeinab Abbasimazar
#Build Arguments
ARG REP_USER
ARG REP_PASS
# Build
RUN echo 'REP_USER:'$REP_USER', REP_PASS:'$REP_PASS
Run Code Online (Sandbox Code Playgroud)

我写了一个docker-compose.ymlfor build:

version: "2"
services:
  ui:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        REP_USER: $REP_USER
        REP_PASS: $REP_PASS
Run Code Online (Sandbox Code Playgroud)

我不想直接在compose文件中定义这些参数,所以我尝试在docker compose build期间发送它们:

REP_USER=myusername REP_PASS=mypassword docker-compose build
Run Code Online (Sandbox Code Playgroud)

哪个没用.我把我Dockerfile改为使用这些参数作为环境变量; 所以我删除了ARG行:

FROM jessie
MAINTAINER Zeinab Abbasimazar
# Build
RUN echo 'REP_USER:'$REP_USER', REP_PASS:'$REP_PASS
Run Code Online (Sandbox Code Playgroud)

而且docker-compose.yml:

version: "2"
  services:
    ui:
      build:
        context: .
        dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)

REP_USER=myusername REP_PASS=mypassword docker-compose build; …

arguments environment-variables docker dockerfile docker-compose

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

从 Dockerfile 中的自定义 whl 文件安装 pip

我有一个 Dockerfile 正在尝试whl使用pip. 我想强制在搜索中pip包含我的whl文件,但它没有:

No distributions matching the version for mylibname==mylibversion
Run Code Online (Sandbox Code Playgroud)

我尝试使用build_extwith options -L

pip install --global-option=build_ext --global-option="-L/directory/containing/whl/file/"
Run Code Online (Sandbox Code Playgroud)

-I

pip install --global-option=build_ext --global-option="-I/directory/containing/whl/file/"
Run Code Online (Sandbox Code Playgroud)

-b

pip install --global-option=build_ext --global-option="-b/directory/containing/whl/file/"
Run Code Online (Sandbox Code Playgroud)

但他们都没有工作。

编辑 1:

这是我的Dockerfile

FROM python:2.7.9
MAINTAINER Zeinab Abbasimazar
ADD myprojectdir .
RUN ls -la ${HOME}/myprojectdir/dependency
RUN pip --version
RUN pip install --global-option=build_ext --global-option="-L${HOME}/myprojectdir/dependency" mypackagename-mypackageversion
WORKDIR .
CMD python --version
Run Code Online (Sandbox Code Playgroud)

这是输出docker build -t myimagename . …

python pip docker dockerfile python-wheel

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

尝试 k6 运行 js 文件时获得权限被拒绝

我正在努力学习k6,我从它的官方文档开始。我在运行文档中使用 docker 镜像和命令行尝试了示例代码。在 docker 版本中它工作正常:

zeinab@ZiZi:~$ docker run -i loadimpact/k6 run - <k6_test.js

      /\      |??|  /??/  /?/   
     /\  /  \     |  |_/  /  / /    
    /  \/    \    |      |  /  ??\  
   /          \   |  |?\  \ | (_) | 
  / __________ \  |__|  \__\ \___/ .io

  execution: local--------------------------------------------------]   servertor
     output: -
     script: -

    duration: -, iterations: 1
     vus: 1, max: 1

time="2020-02-18T11:14:26Z" level=info msg=Running i=0 t=971.124809ms starting
...
time="2020-02-18T11:14:55Z" level=info msg=Running i=0 t=29.971104099s …
Run Code Online (Sandbox Code Playgroud)

javascript permission-denied k6

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

npm install 在构建 docker 镜像时返回连接超时

我正在尝试制作一个 docker 图像,包括newman. 我尝试使用 构建图像node:10-alpine,但在npm install -g newman. 这是我的 docker 命令:

RUN set http_proxy= && \
    set https_proxy= && \
    yarn config delete proxy && \
    npm config rm https-proxy && \
    npm config rm proxy && \
    npm config set registry http://registry.npmjs.org/ && \
    npm config set strict-ssl false && \
    npm cache clean --force && \
    npm cache verify && \
    npm install -g newman
Run Code Online (Sandbox Code Playgroud)

完整的错误是:

npm ERR! code ECONNREFUSED
npm ERR! …
Run Code Online (Sandbox Code Playgroud)

npm node-modules docker npm-install

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

如何使用robotframework数据库库将utf8字符插入oracle数据库

我有一个机器人脚本,可以从sql文件中插入一些sql语句;其中一些语句包含utf8字符。如果我使用navicat工具将此文件手动插入数据库,一切都很好。但是,当我尝试使用机器人框架的数据库库执行此文件时,utf8字符会发疯!

这是我的utf8包含的sql语句:

INSERT INTO "MY_TABLE" VALUES (2, '???1');
Run Code Online (Sandbox Code Playgroud)

这是我使用数据库库的方式:

Connect To Database Using Custom Params     cx_Oracle   ${dbConnection}
Execute Sql Script      ${sqlFile}
Disconnect From Database
Run Code Online (Sandbox Code Playgroud)

这是我在数据库中得到的:

???????????? 1
Run Code Online (Sandbox Code Playgroud)

我尝试cx_Oracle直接使用执行SQL文件,但仍然失败!原始库中似乎有问题。这是我用于导入SQL文件的内容:

import cx_Oracle
if __name__ == "__main__":
    dsn_tns = cx_Oracle.makedsn(ip, port, sid)
    db = cx_Oracle.connect(username, password, dsn_tns)
    sql_commands = open(sql_file_addr, 'r').read().split(";")
    cr = db.cursor()
    for command in sql_commands:
        if not command in ["", "\t", "\n", "\r", "\n\r", "\r\n", None]:
            print "Executing SQL command:", command
            cr.execute(command)

    db.commit()
Run Code Online (Sandbox Code Playgroud)

我发现我可以在连接字符串中定义字符集。我已经为mysql数据库完成了该任务,并且该框架成功地将UTF8字符插入了数据库;这是我的MySQL连接字符串:

database='db_name', user='db_username', …
Run Code Online (Sandbox Code Playgroud)

sql database utf-8 robotframework

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

在破折号后使用逗号而不是反转时,正则表达式中的"字符范围错误"

我在python控制台中尝试过这个命令:

re.match('^\<.+\>([\w\s-,]+)\<.+\>$', 'Carrier-A')
Run Code Online (Sandbox Code Playgroud)

我得到了:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/re.py", line 141, in match
    return _compile(pattern, flags).match(string)
  File "/usr/lib/python2.7/re.py", line 251, in _compile
    raise error, v # invalid expression
sre_constants.error: bad character range
Run Code Online (Sandbox Code Playgroud)

但是当我使用时:

re.match('^\<.+\>([\w\s,-]+)\<.+\>$', 'Carrier-A')
Run Code Online (Sandbox Code Playgroud)

没有错误返回.

关于字符序列我应该考虑什么?

python regex python-2.7

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

在Windows中部署cx_Oracle

我正在尝试cx_Oracle在python中使用模块来访问远程数据库并在表中插入或删除行.BTW我已经下载了oracle即时客户端11.1以及odbc和sqlplus版本.我已经设置了环境变量,ORACLE_HOME并且TNS_ADMIN目录中有解压缩的文件,并将此目录添加到PATH变量中.当我用Google搜索时,我认为应该有一些.ora文件,但我找不到它们.

我可以使用sqlplus命令行中的命令,但我的主要问题是我无法安装和使用cx_Oracle.我不想使用任何命令行脚本; 我只是想cx_Oracle用作API.

任何人都可以给我一个完整的解释,我真的被困在那里.该领域的所有文件都含糊不清.最好的祝福.

编辑1:

我尝试使用cx_Oraclewith python setup.py installpython setup.py build --compiler=mingw32命令的源包.我没有再次得到oracle错误,但是我收到了command 'gcc' failed错误.我尝试了MinGW编译器并编辑了环境变量PATH以包含MinGW安装目录(例如C:\MinGW); 我还安装了Microsoft Visual C++(版本2005,2008和2010); 但我仍然得到错误.

编辑2:

由于@jpmc26提到了tnsnames.ora文件,我决定补充说我已经尝试制作tnsnames.ora一个sqlplus.ora文件并将它们放在目录中C:\oracle\instant_client_11_1\network\admin; 但是当我用Google搜索时,我意识到如果你使用cx_Oracle.connect(username, password, cx_Oracle.makedsn(ip, port, sid))命令,你可以跳过.ora文件.cx_Oracle.makedsn会使结构本身.

python windows cx-oracle oracle11g

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

如何有效地根据python中键的值对字典列表进行分类?

我在 python 中有一个字典列表,我想根据所有字典中存在的键的值对它们进行分类,并分别处理每个类别。我不知道这些值是什么,我只知道存在一个特殊的键。这是清单:

dictList = [
            {'name': 'name1', 'type': 'type1', 'id': '14464'}, 
            {'name': 'name2', 'type': 'type1', 'id': '26464'},
            {'name': 'name3', 'type': 'type3', 'id': '36464'},
            {'name': 'name4', 'type': 'type5', 'id': '43464'},
            {'name': 'name5', 'type': 'type2', 'id': '68885'}
            ]
Run Code Online (Sandbox Code Playgroud)

这是我目前使用的代码:

while len(dictList):
    category = [l for l in dictList if l['type'] == dictList[0]['type']]
    processingMethod(category)
    for item in category:
        dictList.remove(item)
Run Code Online (Sandbox Code Playgroud)

上面列表上的这个迭代会给我以下结果:

Iteration 1:
            category = [
                        {'name': 'name1', 'type': 'type1', 'id': '14464'}, 
                        {'name': 'name2', 'type': 'type1', 'id': '26464'},
                        ]

Iteration 2:
            category = …
Run Code Online (Sandbox Code Playgroud)

python list categorization

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

go 1.18.1 内置库中的主要包

我正在尝试将项目的 golang 版本从 升级1.151.18.1. 我更改了版本go.mod并执行了go mod tidy命令。

奇怪的是,我的主文件中出现以下错误,该文件main本身有一个函数:

'main' collides with name declared in this package
Run Code Online (Sandbox Code Playgroud)

它发生在net/httpsyscall库中:

当我检查警告是否正确并且两个库中都有主包时。

我应该使用替代库还是应该更改导入它们的方式?

编辑1:

这是一个 IDE 错误,我使用 Goland。

version go

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