小编Dav*_*her的帖子

C#Selenium'ExpectedConditions已过时'

当尝试使用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)

c# selenium webdriver

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

NodeJS + Express服务的HTML文件没有加载js文件?

我正在运行一个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)

html javascript node.js express

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

使用OpenGraph元标记的Google Plus共享对话框显示错误的图像

我正在使用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+正在显示旧图片,我还通过他们的调试器运行了我的网址,但图片不会更新.谁知道为什么?

html facebook opengraph google-plus

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

Xamarin.Forms System.ArgumentException:路径中有非法字符

我是 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。我该如何修复他们的错误?

android xamarin xamarin.forms

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

NodeJS Mongoose Schema'save'函数错误处理?

我在使用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)

validation error-handling mongoose node.js

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

将CancellationToken作为参数传递给Task.Run有什么好处?

显然,我意识到它使我可以取消任务,但是此代码无需将令牌传递到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)

.net vb.net task task-parallel-library cancellation

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

sqlite-net-pcl SqliteAsyncConnection.CreateTableAsync&lt;T&gt; 抛出 System.MissingMethodException

我正在尝试使用最新版本的 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 包的最新稳定版本。

c# sqlite-net sqlite-net-pcl

6
推荐指数
2
解决办法
2785
查看次数

Selenium Firefox 无法添加扩展

我正在尝试使用 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,仍然有同样的问题。

c# selenium

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

Moment.js以dd:hh:mm:ss格式获取两个日期之间的差异?

我正计算当天晚上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

我知道这很有意义,但我怎么能达到我想要的格式呢?

javascript date momentjs

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

NodeJS + ExpressJS压缩什么都不做?

我已经读过我应该将请求压缩到我的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)

javascript compression node.js express

3
推荐指数
2
解决办法
2939
查看次数