有什么区别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) 故事:
在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"?究竟是什么时候发生这种变通方法的缺点(如果有的话)?
我个人使用这种解决方法而没有完全理解为什么我必须这样做以及它可能导致什么问题.
我似乎无法使用鼻子测试框架来识别文件结构中测试脚本下面的模块.我已经设置了一个最简单的例子来演示这个问题.我将在下面解释.
这是包文件结构:
./__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) 以下代码一直有效,直到今天我从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) 我试图从下拉列表中选择使用量角器进行角度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 = …
在这里几次我已经看到人们使用rt
和wt
模式来读写文件.
例如:
with open('input.txt', 'rt') as input_file:
with open('output.txt', 'wt') as output_file:
...
Run Code Online (Sandbox Code Playgroud)
我不明白的方式记载,但因为open()
不抛出一个错误-看起来几乎是合法的使用.
是什么状况,使用wt
vs w
和 rt
vs 之间有什么区别r
吗?
我试图解析包含一些非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上运行它给了我一个错误.
不知道如何克服..
PEP8表明:
应按以下顺序对导入进行分组:
- 标准库导入
- 相关的第三方进口
- 本地应用程序/库特定导入
您应该在每组导入之间添加一个空行.
有没有一种方法来检查,如果该标准在使用静态代码分析工具包违反任何地方,比如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) 我正在尝试使用scrapy从网页上抓取产品信息.我的待删节网页如下所示:
我试图复制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)
任何想法都表示赞赏.谢谢!
在硒的文件中提到,在Chrome的webdriver可以采取的一个实例ChromeOptions
,但我无法弄清楚如何创建ChromeOptions
.
我希望将--disable-extensions
旗帜传递给Chrome.
python ×8
selenium ×4
javascript ×3
protractor ×3
testing ×2
angularjs ×1
csv ×1
django ×1
encoding ×1
file ×1
file-io ×1
jasmine ×1
lxml ×1
nose ×1
pep8 ×1
scrapy ×1
web-scraping ×1
xml-parsing ×1