我在 Angular 中进行单元测试时遇到错误。错误是 TypeError: 无法读取未定义的属性“pipe”。为此,我使用了可观察的对象,并尝试测试订阅的输出。我将不胜感激任何帮助!谢谢你!
obs1$: Observable<number>;
pos=12345;
constructor(
private service1: Service) {
}
ngOnInit() {
this.obs1$ = this.service1.retrieveData1(this.pos)
.pipe(
map(item => item.value || null))
}Run Code Online (Sandbox Code Playgroud)
let component: ComponentName;
let fixture: ComponentFixture<ComponentName>;
const serviceSpy = jasmine.createSpyObj('Service',['retrieveData1']);
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ComponentName],
providers: [{ provide:Service, useValue: {} }
})
.overrideComponent(ComponentName, {
set: {
providers: [
{ provide: ComponentName, useValue: serviceSpy }
]
}
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ComponentName);
component = fixture.componentInstance;
});
fit('should retrieve value', done …Run Code Online (Sandbox Code Playgroud)如何验证实际IP地址是否被代理服务器替换。我附上了代码。我用selenium和python编写了该程序。
# selenium imports
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import random
PROXY ="88.157.149.250:8080";
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=%s' % PROXY)
# //a[starts-with(@href, 'https://www.amazon.com/')]/@href
LINKS_XPATH = '//*[contains(@id,"result")]/div/div[3]/div[1]/a'
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get(
'https://www.amazon.com/s/ref=lp_11444071011_nr_p_8_1/132-3636705-4291947?rh=n%3A3375251%2Cn%3A%213375301%2Cn%3A10971181011%2Cn%3A11444071011%2Cp_8%3A2229059011')
links = browser.find_elements_by_xpath(LINKS_XPATH)
for link in links:
href = link.get_attribute('href')
print(href)Run Code Online (Sandbox Code Playgroud)
我创建了一个Python webdriver程序,我使用了send_keys,我遇到了这个错误:
Traceback (most recent call last):
File "D:/Amazon FBA/amazon-100-botzi/templates/send_keys_v2.py", line 10, in <module>
elem.clear()
File "C:\Users\Andrei\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 95, in clear
self._execute(Command.CLEAR_ELEMENT)
File "C:\Users\Andrei\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 628, in _execute
return self._parent.execute(command, params)
File "C:\Users\Andrei\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "C:\Users\Andrei\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 237, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing 'value'
(Session info: chrome=65.0.3325.181)
(Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.16299 x86_64)
Run Code Online (Sandbox Code Playgroud)
它是关于chrome webdriver版本还是chrome版本?我应该使用什么版本?我怎么解决这个问题?我附上了代码.我将不胜感激任何帮助.
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import …Run Code Online (Sandbox Code Playgroud) 如何停止使用 Angular Material 芯片在列表中添加重复值?所以,例如,我想在水果列表中只添加一个苹果,当我添加柠檬时,我只想添加一个。现在我可以添加多次。当我关闭芯片时,我希望能够再次添加它。我将不胜感激任何帮助。谢谢!
import {COMMA, ENTER} from '@angular/cdk/keycodes';
import {Component, ElementRef, ViewChild} from '@angular/core';
import {FormControl} from '@angular/forms';
import {MatAutocompleteSelectedEvent, MatChipInputEvent} from '@angular/material';
import {Observable} from 'rxjs';
import {map, startWith} from 'rxjs/operators';
/**
* @title Chips Autocomplete
*/
@Component({
selector: 'chips-autocomplete-example',
templateUrl: 'chips-autocomplete-example.html',
styleUrls: ['chips-autocomplete-example.css']
})
export class ChipsAutocompleteExample {
visible: boolean = true;
selectable: boolean = true;
removable: boolean = true;
addOnBlur: boolean = false;
separatorKeysCodes = [ENTER, COMMA];
fruitCtrl = new FormControl();
filteredFruits: Observable<any[]>;
fruits = [ …Run Code Online (Sandbox Code Playgroud) 如何使用selenium和谷歌浏览器使用代理服务器?我附加了代码,我不确定这是否会改变实际的代理服务器.
# selenium imports
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import random
PROXY ="88.157.149.250:8080";
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=%s' % PROXY)
# //a[starts-with(@href, 'https://www.amazon.com/')]/@href
LINKS_XPATH = '//*[contains(@id,"result")]/div/div[3]/div[1]/a'
browser = webdriver.Chrome(executable_path="C:\\Users\Andrei\Downloads\chromedriver_win32\chromedriver.exe",
chrome_options=chrome_options)
browser.get(
'https://www.amazon.com/s/ref=lp_11444071011_nr_p_8_1/132-3636705-4291947?rh=n%3A3375251%2Cn%3A%213375301%2Cn%3A10971181011%2Cn%3A11444071011%2Cp_8%3A2229059011')
links = browser.find_elements_by_xpath(LINKS_XPATH)
for link in links:
href = link.get_attribute('href')
print(href)Run Code Online (Sandbox Code Playgroud)
我使用垂直材料步进器,我想默认打开第二个项目。现在它打开第一个项目。我想默认打开“填写您的地址”。为此,我使用了 Material Angular。因此,当我打开应用程序时,我想打开第二个项目并更改图标颜色。我附上了代码。我将不胜感激任何帮助。
html:
<button mat-raised-button (click)="isLinear = !isLinear" id="toggle-linear">
{{!isLinear ? 'Enable linear mode' : 'Disable linear mode'}}
</button>
<mat-vertical-stepper [linear]="isLinear" #stepper>
<mat-step [stepControl]="firstFormGroup">
<form [formGroup]="firstFormGroup">
<ng-template matStepLabel>Fill out your name</ng-template>
<mat-form-field>
<input matInput placeholder="Last name, First name" formControlName="firstCtrl" required>
</mat-form-field>
<div>
<button mat-button matStepperNext>Next</button>
</div>
</form>
</mat-step>
<mat-step [stepControl]="secondFormGroup">
<form [formGroup]="secondFormGroup">
<ng-template matStepLabel>Fill out your address</ng-template>
<mat-form-field>
<input matInput placeholder="Address" formControlName="secondCtrl" required>
</mat-form-field>
<div>
<button mat-button matStepperPrevious>Back</button>
<button mat-button matStepperNext>Next</button>
</div>
</form>
</mat-step>
<mat-step>
<ng-template matStepLabel>Done</ng-template>
You are …Run Code Online (Sandbox Code Playgroud) 如何在垫子工具提示 div 的底部放置一个三角形?我使用 Angular Material 创建了工具提示,我在 ts 中导入了 TooltipPosition 以将 div 放在上面,我在 scss 中使用 &:after 将 vtriangle 放在 div 的底部,但它不起作用。我附上了代码。我将不胜感激任何帮助。
import { TooltipPosition } from "@angular/material/tooltip";
@Component({
selector: "app-financial-information",
templateUrl: "./financial-information.component.html",
styleUrls: ["./financial-information.component.scss"]
})
export class TooltipComponent implements OnInit {
//position tooltip content when i hover over the i
positionOptions: TooltipPosition[] = ["above"];
position = new FormControl(this.positionOptions[0]);
constructor( ) { }
ngOnInit() {}
}Run Code Online (Sandbox Code Playgroud)
::ng-deep .tooltip-pd {
position:relative;
padding: 0.738rem 1.113rem;
color: $grey1 !important;
margin-bottom: 5px;
white-space: pre-line;
width: 50px; …Run Code Online (Sandbox Code Playgroud)在输入字段中输入时如何删除特殊字符。我使用 (keyup) 或 (keydown) 并替换它。我附上了代码。我将不胜感激任何帮助。谢谢!
removeSpecialCharacters(event) {
let newVal = event.target.value.replace('[^A-Za-z0-9]', '');
return newVal;
}Run Code Online (Sandbox Code Playgroud)
<input maxlength="10" (keydown)="this.removeSpecialCharacters($event)">Run Code Online (Sandbox Code Playgroud)
如何同时运行多个python文件?有 3 个文件:bot_1.py、bot_2.py、bot_3.py。我想同时运行它们。我附上了代码。我应该在工作函数中写什么来使这个脚本工作?我将不胜感激任何帮助。
import multiprocessing
import subprocess
def worker(file):
#your subprocess code
subprocess.Popen(['screen', './bot_1.py'])
subprocess.Popen(['screen', './bot_2.py'])
subprocess.Popen(['screen', './bot_3.py'])
if __name__ == '__main__':
files = ["bot_1.py","bot_2.py","bot_3.py"]
for i in files:
p = multiprocessing.Process(target=worker(i))
p.start()Run Code Online (Sandbox Code Playgroud)
如何检查Angular(JavaScript)中小于4年的日期?
我想显示一条消息,如果它是true,则显示另一条消息,如果它是false。
我想检查特定的日期,例如08.07.2015(从现在起正好是4年,以便获取该日期并进行比较)。
我的代码:
public yearsDif() {
const field = this.fForm.get("field").value;
let diff = new Date().getFullYear() - new Date(field).getFullYear();
if (diff < 4) {
alert('under 4 years');
}else{
alert('more than 4 years');
}
}
Run Code Online (Sandbox Code Playgroud)
我如何在没有表单的情况下验证电子邮件地址是否具有@符号和点而无需按下按钮。我将不胜感激任何帮助。
<mat-form-field class="example-full-width">
<input matInput placeholder="Favorite food" value="Sushi">
</mat-form-field>Run Code Online (Sandbox Code Playgroud)