当尝试使用ExpectedConditions显式等待元素变得可见时,Visual Studio警告我它现在已经过时,很快就会从Selenium中删除.
实现相同结果的当前/新方法是什么?
var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30));
var element = wait.Until(ExpectedConditions.ElementIsVisible(By.Id("content-section")));
Run Code Online (Sandbox Code Playgroud) 我正在运行一个NodeJS服务器,它使用一个catchall路由来提供文件'index.html'.在该文件中,我链接到同一目录中的javascript文件.该javascript文件未正确加载.我的控制台中的错误显示为"Uncaught SyntaxError:Unexpected Token",在研究之后似乎意味着我的JS文件的路径不正确.但是,js文件与'index.html'位于同一目录中,我正在引用它,这应该是正确的?
这是我的代码
server.js
var express = require('express');
var app = express();
var config = require('./config');
var apiRouter = express.Router();
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var User = require('./app/models/User');
var jwt = require('jsonwebtoken');
var path = require('path');
//Set the public folder
app.use(express.static('/public'));
//Allows us to parse POST data.
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
mongoose.connect(config.db);
var apiRouter = require('./app/routes/api')(app, express);
app.use('/api', apiRouter);
//MEAN apps use a catchall after any routes created by Node.
app.get('*', function(req, res) { …
Run Code Online (Sandbox Code Playgroud) 我正在使用OpenGraph标签,所以当我在Facebook或Google+上分享我的页面时,这些服务将知道应该在共享对话框中显示什么图像.
<meta property="og:title" content="Best Site Ever" />
<meta property="og:description" content="This website rules" />
<meta property="og:image" content="http://example.com/image.png" />
Run Code Online (Sandbox Code Playgroud)
两个服务都显示正确的图像,但我更改了og:image中的图像(和文件名).只有Facebook在通过URL调试器运行后才显示新图像.Google+正在显示旧图片,我还通过他们的调试器运行了我的网址,但图片不会更新.谁知道为什么?
我是 Xamarin.Forms 项目的新手。我用 VS2019 创建了一个项目,该项目没有进行任何修改,在 Android 设备管理器中添加了一个 Pixel 2 Pie 9.0 - Api 28 模拟器。当我尝试在 android 模拟器上运行该项目时,我无法运行我的应用程序,错误列表中出现以下异常:
Error XARDF7004: System.ArgumentException: Illegal characters in path.
at System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(String fullPath)
at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
at Xamarin.Android.Tasks.RemoveDirFixed.RunTask()
at Xamarin.Android.Tasks.AndroidTask.Execute()
Run Code Online (Sandbox Code Playgroud)
由于我只是简单使用了一个VS2019生成的基础项目模板,所以这肯定是微软端的一个bug。我该如何修复他们的错误?
我在使用res.send(错误)向用户输出错误时遇到问题,该错误在Mongoose用户架构"保存"功能的回调中被调用.我想要注意的是,当我使用console.log(错误)时,它显示预期的错误(例如用户名太短),但res.send在PostMan中发送带有POST值的请求时输出"{}"应该导致错误.
此外,我想知道我是否应该在我的路由器或我的Mongoose用户模式.pre函数中进行输入验证?验证似乎是正确的,因为它使我的Node路由器文件更清洁.
这是有问题的代码......
应用程序/路由/ apiRouter.js
var User = require('../models/User');
var bodyParser = require('body-parser');
...
apiRouter.post('/users/register', function(req, res, next) {
var user = new User;
user.name = req.body.name;
user.username = req.body.username;
user.password = req.body.password;
user.save(function(err) {
if (err) {
console.log(err);
res.send(err);
} else {
//User saved!
res.json({ message: 'User created' });
}
});
});
...
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/ user.js的
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var bcrypt = require('bcrypt-nodejs');
var validator = require('validator');
var UserSchema = new Schema({
name: String,
username: …
Run Code Online (Sandbox Code Playgroud) 显然,我意识到它使我可以取消任务,但是此代码无需将令牌传递到Task.Run就可以达到相同的效果。
实际区别是什么?谢谢。
Dim cts As New CancellationTokenSource
Dim ct As CancellationToken = cts.Token
Task.Run(Sub()
For i = 1 To 1000
Debug.WriteLine(i)
ct.ThrowIfCancellationRequested()
Threading.Thread.Sleep(10)
Next
End Sub)
cts.CancelAfter(500)
Run Code Online (Sandbox Code Playgroud)
VS
Dim cts As New CancellationTokenSource
Dim ct As CancellationToken = cts.Token
Task.Run(Sub()
For i = 1 To 1000
Debug.WriteLine(i)
ct.ThrowIfCancellationRequested()
Threading.Thread.Sleep(10)
Next
End Sub, ct)
cts.CancelAfter(500)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用最新版本的 sqlite-net-pcl nuget 包创建一个表
var db = new SQLiteAsyncConnection("data.db");
await db.CreateTableAsync<Site>();
Run Code Online (Sandbox Code Playgroud)
CreateTableAsync 调用引发以下异常:
System.MissingMethodException: '方法未找到:'System.String SQLitePCL.raw.sqlite3_column_name(SQLitePCL.sqlite3_stmt, Int32)'。'
这是站点类
public class Site
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public String Name;
public String PriceCssSelector;
public String URLRegex;
public Site()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试降级到 sqlite-net-pcl 包的最新稳定版本。
我正在尝试使用 Selenium 将最新版本的 AdBlock 添加到最新版本的 Firefox。浏览器加载正常,没有例外,但 AdBlock 没有正确安装,当我检查浏览器中的扩展时,它不存在。
public static FirefoxDriver CreateFirefoxDriver(string driverPath, string binaryPath)
{
var profile = new FirefoxProfile();
profile.AddExtension(@"C:\Users\david\source\repos\TestingApp\TestingApp\bin\Debug\selenium\browsers\firefox\extensions\adblock_plus-3.3.1-an+fx.xpi");
profile.SetPreference("permissions.default.image", 2);
var options = new FirefoxOptions();
options.Profile = profile;
var service = FirefoxDriverService.CreateDefaultService(driverPath);
service.FirefoxBinaryPath = binaryPath;
var driver = new FirefoxDriver(service, options);
return driver;
}
Run Code Online (Sandbox Code Playgroud)
当我使用相同的 xpi 文件手动添加扩展时,它工作正常。
Selenium Nuget 版本 3.14.0(最新)
geckodriver 0.23.0 win64(最新)
Firefox 62.0.3 64 位(最新)
AdBlock 3.3.1(最新)
更新:
尝试了最新版本的 uBlock xpi 文件,也没有出现在我的扩展中,无一例外地帮助我诊断出了什么问题。可以轻松地手动添加相同的扩展。
我尝试使用 Firefox 61 和 60,仍然有同样的问题。
我正计算当天晚上11:59的时间.这是一个例子.
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.js"></script>
<script>
setInterval(function() {
var now = moment();
var mid = moment();
mid = mid.endOf('day');
var diffHours = mid.diff(now, 'hours');
var diffMinutes = mid.diff(now, 'minutes');
var diffSeconds = mid.diff(now, 'seconds');
console.log(diffHours + "h " + diffMinutes + "m " + diffSeconds + "s");
}, 1000)
</script>
Run Code Online (Sandbox Code Playgroud)
但是,我希望它会给我一个时间,例如20h 13m 49s,而不是我得到20h 1255m 73500s
我知道这很有意义,但我怎么能达到我想要的格式呢?
我已经读过我应该将请求压缩到我的Node服务器,所以我使用npm来安装压缩模块,将它与require()一起添加到我的server.js,然后将其作为函数传递给app.use.
然后我看了一下网络标签,我想知道压缩在kb中节省了多少.所以我关闭压缩,重新启动我的服务器,它与打开压缩时的kb数量相同?
这是我的server.js
var express = require('express'),
app = express(),
path = require('path'),
apiRouter = require('./app/routes/api'),
mongoose = require('mongoose'),
compression = require('compression');
app.use(compression());
app.use(express.static('public'));
app.use('/api', apiRouter);
app.use('*', function(req, res) {
res.sendFile(path.join(__dirname + '/public/index.html'));
});
mongoose.connect('mongodb://localhost/triviaattack');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
//Connected to DB successfully.
});
app.listen(1337);
Run Code Online (Sandbox Code Playgroud) c# ×3
javascript ×3
node.js ×3
express ×2
html ×2
selenium ×2
.net ×1
android ×1
cancellation ×1
compression ×1
date ×1
facebook ×1
google-plus ×1
momentjs ×1
mongoose ×1
opengraph ×1
sqlite-net ×1
task ×1
validation ×1
vb.net ×1
webdriver ×1
xamarin ×1