小编ale*_*cxe的帖子

toBe(true)vs toBeTruthy()vs toBeTrue()

有什么区别expect(something).toBe(true),expect(something).toBeTruthy()expect(something).toBeTrue()

请注意,这toBeTrue()是一个自定义匹配器,介绍在jasmine-matchers其他有用和方便的匹配器,如toHaveMethod()toBeArrayOfStrings().


问题是通用的,但是,作为一个真实的例子,我正在测试一个元素是否显示在protractor.在这种情况下我应该使用哪个匹配器?

expect(elm.isDisplayed()).toBe(true);
expect(elm.isDisplayed()).toBeTruthy();
expect(elm.isDisplayed()).toBeTrue();
Run Code Online (Sandbox Code Playgroud)

javascript testing jasmine protractor jasmine-matchers

133
推荐指数
4
解决办法
7万
查看次数

WebDriver点击()vs JavaScript点击()

故事:

在StackOverflow上,我看到用户报告他们无法通过selenium WebDriver"click"命令单击一个元素,并且可以通过执行脚本单击JavaScript来解决它.

Python中的示例:

element = driver.find_element_by_id("myid")
driver.execute_script("arguments[0].click();", element)
Run Code Online (Sandbox Code Playgroud)

WebDriverJS/Protractor中的示例:

var elm = $("#myid");
browser.executeScript("arguments[0].click();", elm.getWebElement());
Run Code Online (Sandbox Code Playgroud)

问题:

为什么在常规WebDriver点击时没有点击"通过JavaScript"?究竟是什么时候发生这种变通方法的缺点(如果有的话)?

我个人使用这种解决方法而没有完全理解为什么我必须这样做以及它可能导致什么问题.

javascript python selenium selenium-webdriver protractor

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

Python鼻子导入错误

我似乎无法使用鼻子测试框架来识别文件结构中测试脚本下面的模块.我已经设置了一个最简单的例子来演示这个问题.我将在下面解释.

这是包文件结构:

./__init__.py
./foo.py
./tests
   ./__init__.py
   ./test_foo.py
Run Code Online (Sandbox Code Playgroud)

foo.py包含:

def dumb_true():
    return True
Run Code Online (Sandbox Code Playgroud)

tests/test_foo.py包含:

import foo

def test_foo():
    assert foo.dumb_true()
Run Code Online (Sandbox Code Playgroud)

两个init .py文件都是空的

如果我nosetests -vv在主目录(foo.py所在)中运行,我得到:

Failure: ImportError (No module named foo) ... ERROR

======================================================================
ERROR: Failure: ImportError (No module named foo)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line 379, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 39, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 86, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File …
Run Code Online (Sandbox Code Playgroud)

python nose python-import

117
推荐指数
4
解决办法
5万
查看次数

在不带引号的字段错误中看到的CSV换行符

以下代码一直有效,直到今天我从Windows机器导入并出现此错误:

在未引用字段中看到的换行符 - 您是否需要以通用换行模式打开文件?

import csv

class CSV:


    def __init__(self, file=None):
        self.file = file

    def read_file(self):
        data = []
        file_read = csv.reader(self.file)
        for row in file_read:
            data.append(row)
        return data

    def get_row_count(self):
        return len(self.read_file())

    def get_column_count(self):
        new_data = self.read_file()
        return len(new_data[0])

    def get_data(self, rows=1):
        data = self.read_file()

        return data[:rows]
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

def upload_configurator(request, id=None):
    """
    A view that allows the user to configurator the uploaded CSV.
    """
    upload = Upload.objects.get(id=id)
    csvobject = CSV(upload.filepath)

    upload.num_records = csvobject.get_row_count()
    upload.num_columns = csvobject.get_column_count()
    upload.save()

    form = …
Run Code Online (Sandbox Code Playgroud)

python csv django

117
推荐指数
5
解决办法
13万
查看次数

如何在下拉量子器e2e测试中选择选项

我试图从下拉列表中选择使用量角器进行角度e2e测试的选项.

以下是select选项的代码段:

<select id="locregion" class="create_select ng-pristine ng-invalid ng-invalid-required" required="" ng-disabled="organization.id !== undefined" ng-options="o.id as o.name for o in organizations" ng-model="organization.parent_id">
    <option value="?" selected="selected"></option>
    <option value="0">Ranjans Mobile Testing</option>
    <option value="1">BeaverBox Testing</option>
    <option value="2">BadgerBox</option>
    <option value="3">CritterCase</option>
    <option value="4">BoxLox</option>
    <option value="5">BooBoBum</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我试过了:

ptor.findElement(protractor.By.css('select option:1')).click();
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

指定了无效或非法字符串构建信息:版本:'2.35.0',修订版:'c916b9d',时间:'2013-08-12 15:42:01'系统信息:os.name:'Mac OS X' ,os.arch:'x86_64',os.version:'10 .9',java.version:'1.6.0_65'驱动程序信息:driver.version:unknown

我也尝试过:

ptor.findElement(protractor.By.xpath('/html/body/div[2]/div/div[4]/div/div/div/div[3]/ng-include/div/div[2]/div/div/organization-form/form/div[2]/select/option[3]')).click();
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

ElementNotVisibleError:元素当前不可见,因此可能无法与命令持续时间或超时交互:9毫秒构建信息:版本:'2.35.0',修订版:'c916b9d',时间:'2013-08-12 15:42: 01'系统信息:os.name:'Mac OS X',os.arch:'x86_64',os.version:'10 .9',java.version:'1.6.0_65'会话ID:bdeb8088-d8ad-0f49-aad9 -82201c45c63f驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver Capabilities [{platform = MAC,acceptSslCerts = true,javascriptEnabled = true,browserName = firefox,rotating = false,locationContextEnabled = true,version = 24.0,cssSelectorsEnabled = true,databaseEnabled = true,handlesAlerts = …

javascript testing selenium angularjs protractor

113
推荐指数
8
解决办法
14万
查看次数

以'rt'和'wt'模式打开文件

在这里几次我已经看到人们使用rtwt模式来读写文件.

例如:

with open('input.txt', 'rt') as input_file:
     with open('output.txt', 'wt') as output_file: 
         ...
Run Code Online (Sandbox Code Playgroud)

我不明白的方式记载,但因为open()不抛出一个错误-看起来几乎是合法的使用.

是什么状况,使用wtvs wrtvs 之间有什么区别r吗?

python file-io file

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

非ASCII字符的SyntaxError

我试图解析包含一些非ASCII cheracter的xml,

代码如下所示

from lxml import etree
from lxml import objectify
content = u'<?xml version="1.0" encoding="utf-8"?><div>Order date                            : 05/08/2013 12:24:28</div>'
mail.replace('\xa0',' ')
xml = etree.fromstring(mail)
Run Code Online (Sandbox Code Playgroud)

但它显示我在'content = ...'这一行上的错误

syntaxError: Non-ASCII character '\xc2' in file /home/projects/ztest/responce.py on line 3, 
but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Run Code Online (Sandbox Code Playgroud)

在终端它正在工作,但在eclipse IDE上运行它给了我一个错误.

不知道如何克服..

python encoding lxml non-ascii-characters xml-parsing

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

导入订单编码标准

PEP8表明:

应按以下顺序对导入进行分组:

  1. 标准库导入
  2. 相关的第三方进口
  3. 本地应用程序/库特定导入

您应该在每组导入之间添加一个空行.

有没有一种方法来检查,如果该标准在使用静态代码分析工具包违反任何地方,比如pylint,pyflakes,pychecker,pep8


违规示例:

from my_package import my_module
from django.db import models
import os
Run Code Online (Sandbox Code Playgroud)

正确的导入方式:

import os

from django.db import models

from my_package import my_module
Run Code Online (Sandbox Code Playgroud)

python static-analysis pep8 python-import

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

硒与scrapy动态页面

我正在尝试使用scrapy从网页上抓取产品信息.我的待删节网页如下所示:

  • 从包含10个产品的product_list页面开始
  • 点击"下一步"按钮加载下10个产品(两个页面之间的网址不变)
  • 我使用LinkExtractor跟踪每个产品链接到产品页面,并获得我需要的所有信息

我试图复制next-button-ajax-call但是无法正常工作,所以我试试了selenium.我可以在一个单独的脚本中运行selenium的webdriver,但我不知道如何与scrapy集成.我应该把硒部分放在我的scrapy蜘蛛里?

我的蜘蛛非常标准,如下所示:

class ProductSpider(CrawlSpider):
    name = "product_spider"
    allowed_domains = ['example.com']
    start_urls = ['http://example.com/shanghai']
    rules = [
        Rule(SgmlLinkExtractor(restrict_xpaths='//div[@id="productList"]//dl[@class="t2"]//dt'), callback='parse_product'),
        ]

    def parse_product(self, response):
        self.log("parsing product %s" %response.url, level=INFO)
        hxs = HtmlXPathSelector(response)
        # actual data follows
Run Code Online (Sandbox Code Playgroud)

任何想法都表示赞赏.谢谢!

python selenium scrapy web-scraping selenium-webdriver

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

如何使用Python将选项传递给Selenium Chrome驱动程序?

硒的文件中提到,在Chrome的webdriver可以采取的一个实例ChromeOptions,但我无法弄清楚如何创建ChromeOptions.

我希望将--disable-extensions旗帜传递给Chrome.

python selenium google-chrome selenium-chromedriver

63
推荐指数
4
解决办法
8万
查看次数