小编Cla*_*sen的帖子

带有selenium webdriver的鼠标滚轮,在没有滚动条的元素上?

我正在尝试驱动类似于Google地图的网络地图的一部分,其中放大/缩小是通过在鼠标悬停时滚动来完成的.理想情况下,我希望能够做到这样的事情:

someElement.scroll(-50)
Run Code Online (Sandbox Code Playgroud)

我在文档中看到的最接近的方法是clicksend_keys,但这些方法都没有滚动.我也尝试通过Javascript将卷轴发送到页面,例如,driver.execute_script("scroll(0,-50)")这似乎没有做任何事情.

我怎样才能做到这一点?

python selenium selenium-webdriver

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

具有pytest依赖的文件之间的依赖关系?

我正在使用pytest和pytest-dependency的功能测试套件.我99%喜欢这些工具,但我无法弄清楚如何在一个文件中进行测试取决于另一个文件中的测试.理想情况下,我希望对dependee进行零更改,并且只更改依赖项中的内容.我希望测试能够依赖于test_one这两个:

# contents of test_one.py
@pytest.mark.dependency()
def test_one():
    # do stuff

@pytest.mark.dependency(depends=["test_one"])
def test_point_one():
    # do stuff
Run Code Online (Sandbox Code Playgroud)

像这样:

# contents of test_two.py
@pytest.mark.dependency(depends=["test_one"])
def test_two():
    # do stuff
Run Code Online (Sandbox Code Playgroud)

当我pytest test_one.py正确地运行它命令事物(并且test_point_one如果test_one失败pytest test_two.py则跳过),但是当我运行时,它会跳过test_two.

我已经尝试添加import test_one到test_two.py无济于事,并且验证导入实际上是正确导入的 - 它不仅仅是被pytest传递"哦,嘿,我已经完成了测试,我没有任何东西可以'跳过!懒惰的万岁!"

我知道我可以在技术上把test_two()test_one.py和它的工作,但我不想只转储每个测试在一个文件中(这是什么,这将最终退化为).我试图通过把所有东西放在正确的架子上来保持整洁,而不是把它全部塞进壁橱里.

此外,我意识到如果这是我可以做的事情,那么存在创建循环依赖的可能性.我没关系.如果我这样开枪自己,那就说实话,我应该得到它.

python pytest

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

使用硒2检查陈旧元素?

使用selenium 2,有没有办法测试元素是否陈旧?

假设我启动从一个页面到另一个页面的转换(A - > B).然后我选择元素X并测试它.假设元素X同时存在于A和B中.

间歇性地,在页面转换发生之前从A中选择X,并且在转到B之后不进行测试,引发StaleElementReferenceException.检查这种情况很容易:

try:
  visit_B()
  element = driver.find_element_by_id('X')  # Whoops, we're still on A
  element.click() 
except StaleElementReferenceException:
  element = driver.find_element_by_id('X')  # Now we're on B
  element.click()
Run Code Online (Sandbox Code Playgroud)

但我宁愿这样做:

element = driver.find_element_by_id('X') # Get the elment on A
visit_B()
WebDriverWait(element, 2).until(lambda element: is_stale(element))
element = driver.find_element_by_id('X') # Get element on B
Run Code Online (Sandbox Code Playgroud)

python selenium-webdriver

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

基于命令行开关进行 pytest 夹具参数化的更简洁方法?

从技术上讲,我已经解决了我正在解决的问题,但我不禁觉得我的解决方案很丑陋:

我有一个 pytest 套件,我可以在两种模式下运行:本地模式(用于开发测试;一切都通过 Chrome 在我的开发箱上运行)和 Seriousface 回归测试模式(用于 CI;该套件在无数浏览器上运行和操作系统)。我有一个命令行标志可以在两种模式之间切换,--test-local. 如果它在那里,我在本地模式下运行。如果它不存在,我会以严肃模式运行。这是我的方法:

# contents of conftest.py
import pytest

def pytest_addoption(parser):
    parser.addoption("--test-local", action="store_true", default=False, help="run locally instead of in seriousface mode")

def pytest_generate_tests(metafunc):
    if "dummy" in metafunc.fixturenames:
        if metafunc.config.getoption("--test-local"):
            driverParams = [(True, None)]
        else:
            driverParams = [(False, "seriousface setting 1"), (False, "seriousface setting 2")]
        metafunc.parameterize("dummy", driverParams)

@pytest.fixture(scope="function")
def driver(dummy):
    _driver = makeDriverStuff(dummy[0], dummy[1])
    yield _driver
    _driver.cleanup()

@pytest.fixture
def dummy():
    pass
Run Code Online (Sandbox Code Playgroud)

问题是,那个dummy固定装置是可怕的。我试过直接pytest_generate_tests参数化driver夹具,但它最终替换了夹具而不是仅仅将东西放入其中,所以cleanup()在测试完成时永远不会被调用。使用 …

python fixtures parameterization command-line-arguments pytest

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

Common Lisp - 类型检查两个变量

嗨,我是 Common Lisp 的初学者。我想检查两个变量是否是整数。如果 n 和 m 都是整数,我希望它返回,-如果它是负数,0如果它是零,+如果它是正数,NIL如果它不是 n 和 m 的整数。我想出了如何用一个变量来做到这一点,但我似乎无法弄清楚如何用两个变量来做到这一点。谢谢。

这是接受数字参数并返回的代码,-如果它是负数,0如果它是零,+如果它是正数,NIL如果它不是整数:

(defun sign (n)
 (if(typep n 'integer)
    (cond ((< n 0) '-)
          ((= n 0) 0)
          ((> n 0) '+))))
Run Code Online (Sandbox Code Playgroud)

每个案例的输出是:

CL-USER> (sign 3) 

+

CL-USER> (sign -3) 

-

CL-USER> (sign 0) 

0

CL-USER> (sign 3.3)

NIL
Run Code Online (Sandbox Code Playgroud)

这是我用于检查两个变量的代码,我希望它检查 n 和 m 是否为整数,以及 n 和 m 是否为正、负或零:

(defun sign (n m)
 (if (and …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

4
推荐指数
2
解决办法
1144
查看次数

划分数字类型是Infinity?

提前抱歉这是一个显而易见的问题.我正在划分两个变量并接收Infinity作为我的结果.以下是详细信息:

typeof a //'number'
typeof b //'number'
typeof (a-b) //'number'
typeof ((a-b)/(b)) //'number'
     a - b = xxx.xxxxx //this works
     (a - b)/b = Infinity
Run Code Online (Sandbox Code Playgroud)

以下是一些更多细节:

a and b are five decimal places (XXX.XXXXX)
// the variables are generated from ....
var z = document.getElementById('foo').getBoundingClientRect()
var y = document.getElementById('bar').getBoundingClientRect()
var a = z.x
var b = y.x
Run Code Online (Sandbox Code Playgroud)

foo是一个div并且bar是一个表 a是在函数 b内部生成的函数内部生成的.on('scroll', ....)

<div id="foo">
  <table id='bar'>
  </table>
</div>
Run Code Online (Sandbox Code Playgroud)

我假设我的问题来自于typof = 'number'.在试图找到我的答案如下:

javascript

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

如何告诉 pytest-dependency 暂时忽略测试依赖项?

我有一个功能测试套件,使用 pytest-dependency 来在它们依赖的其他测试失败时跳过测试。这样,例如,如果登录页面损坏,我会收到一个测试失败,提示“登录页面损坏”,而不是一系列测试失败提示“我无法登录用户 X”、“我无法登录”。登录用户 Y”等

这对于运行整个套件非常有用,但我正在尝试缩短我的编辑-编译-测试循环,而现在最慢的点是测试我的测试。如果我正在进行的测试有许多它所依赖的其他测试,那么它们都必须成功才能不跳过我正在尝试测试的测试。因此,我要么必须运行整个依赖关系树,要么注释掉我的@pytest.mark.dependency(...)装饰器(这是我作为一个人必须记住要做的另一件事)。从技术上讲,这些依赖的测试没有做任何事情来使它们的依赖者能够运行 - 我想要这些依赖项的唯一原因是为了让我更容易对测试失败进行分类。

是否有一个命令行参数可以告诉 pytest-dependency 不要因依赖项而跳过某些内容,或者告诉 pytest 在本次运行(并且仅此运行)中不要使用 pytest-dependency 插件?

python functional-testing pytest pytest-dependency

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

如何输入长度超过 4095 个字符的值?

我正在尝试input()一个包含大量 JSON 粘贴的字符串。

(为什么我要粘贴一大堆 json 超出了我的问题范围,但是当我说我有一个不完全愚蠢的原因时,请相信我!)

但是,由于此答案input()中描述的原因,仅抓取粘贴的前 4095 个字符。

我的代码大致如下:

import json

foo = input()
json.loads(foo)
Run Code Online (Sandbox Code Playgroud)

当我粘贴长度超过 4095 个字符的 JSON blob 时,json.loads(foo)会引发错误。(错误根据 JSON 截断方式的具体情况而有所不同,但它总是会以某种方式失败,因为它缺少最终的}。)

我查看了的文档input(),但它没有提到任何看起来对这个问题有用的内容。没有在非规范模式下输入的标志,没有替代input()风格的函数来处理更大的输入,等等。

有没有办法能够成功粘贴大量输入?这将使我的工具的工作流程比必须粘贴到文件中、将其保存在某个地方,然后将文件的位置传递到脚本中要简单得多。

input python-3.x

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

如何创建具有未知列数的data.frame?

我想在函数中创建一个循环来创建一个具有可变列数的data.frame.

有类似的东西:

a = c("a","b")
b = c(list(1,2,3), list(4,5,6))
data.frame(a,b)
Run Code Online (Sandbox Code Playgroud)

我想得到一个数据框,如:

a 1 2 3
b 4 5 6
Run Code Online (Sandbox Code Playgroud)

而不是我获得:

a  1  2  3  4  5  6
b  1  2  3  4  5  6
Run Code Online (Sandbox Code Playgroud)

谢谢!

PS:我也试过rbind,但它不起作用......

r dataframe

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