小编Kaa*_*ken的帖子

Selenium - 陈旧元素引用:元素未附加到页面

我试图理解为什么它在我试图显示从网站上获取的项目时出错.我也在使用谷歌浏览器浏览器.

chromeDriver.Navigate().GoToUrl("somewebsites");

chromeDriver.FindElement(By.Id("something.link.text")).Click();
chromeDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
Run Code Online (Sandbox Code Playgroud)

而这是我代码的其他部分

var item = chromeDriver.FindElementsByXPath("//*[starts-with(@id,\"g_1_\")]/td[3]/span");
foreach (var value in item)
{
    Console.WriteLine(value.Text); 
}
Run Code Online (Sandbox Code Playgroud)

每当我使用" chromeDriver.FindElement(By.Id("something.link.text"))时.点击();" ,它给出了一个错误.我无法显示我提取的数据.

在错误消息中,它显示" OpenQA.Selenium.StaleElementReferenceException:'陈旧元素引用:元素未附加到页面文档 ".我检查了其他帖子,但我没弄清楚.我该如何解决?

正如我所读到的,selenium的响应速度比网站开放时间快得多,因此它给出了错误.而且,很少,它给出了硒不能定位的元素.有什么建议吗?

编辑:如果我从显示功能中删除" .text ",它会显示" OpenQA.Selenium.Remote.RemoteWebElement ".字符串有问题吗?

EDIT2:我可以保存从网站上获取的数据,如下所示:

[i] ="System.Collections.ObjectModel.ReadOnlyCollection`1 [OpenQA.Selenium.IWebElement]" 为此,我写了这样的东西:

string[] test= new string[100];

for (int i = 0; i < 100; i++)
{
     kaan[i] = driver.FindElements(By.XPath("//*[starts-with(@id,\"g_1_\")]/td[3]/span")).ToString();
}
Run Code Online (Sandbox Code Playgroud)

如何转换为文本

html c# selenium selenium-chromedriver selenium-webdriver

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

在C#中编写和读取excel文件

我正在编写一个程序,通过selenium web驱动程序从网站获取数据.我正在尝试为我们的项目创建足球装备.到目前为止,我完成了从网站上获取日期和时间,团队名称和分数.还在尝试在txt文件上编写,但在txt文件上写入时会变得很乱

如何在excel文件上完成写作并阅读?我想这样写

Date-Time     First-Team   Second-Team    Score    Statistics
28/07 19:00   AM           AVB            2-1      Shot 13123 Pass 65465 ...
28/07 20:00   BM           BVB            2-2      Shot 13123 Pass 65465 ...
28/07 20:00   CM           CVB            2-3      Shot 13123 Pass 65465 ...
Run Code Online (Sandbox Code Playgroud)

这是我的代码的一部分:

StreamWriter file = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Test" + "\\" + pathName + "\\" + subFile + "\\" + pathName + ".txt", false);

for (int k = 2; k > 1; k--)
{ 
     //doing some stuff
}
Run Code Online (Sandbox Code Playgroud)

写作部分:

for (int …
Run Code Online (Sandbox Code Playgroud)

.net c# excel ms-office selenium-webdriver

9
推荐指数
1
解决办法
7063
查看次数

在 Node.js 中解析 XML 文件

我正在使用带有 KDE 等离子的 Arch Linux 系统。我有大约 50mb 的 XML,我需要解析它。该文件具有自定义标签。

示例 XML:

<JMdict>
   <entry>
      <ent_seq>1000000</ent_seq>
      <r_ele>
         <reb>?</reb>
      </r_ele>
      <sense>
         <pos>&unc;</pos>
         <gloss g_type="expl">repetition mark in katakana</gloss>
      </sense>
   </entry>
</JMdict>
Run Code Online (Sandbox Code Playgroud)

我曾尝试提出了Stack Overflow上的许多解决方案,他们并没有在所有的工作,其中一些无法安装到我的系统一样xml-streamxml2json。我决定使用xml2js(他们中的大多数建议使用xml2js),并得到了相同的结果。我怎样才能正确使用它?我正在使用此代码,但它始终返回未定义:

const fs = require('fs-extra');
const xml2js = require('xml2js');
const parser = new xml2js.Parser();

const path = "test.xml";

fs.readFile(path, {encoding: 'utf-8'}, function(error, data) {
     parser.parseString(data, function(err, res) {
         console.log(res);
     });
});

Result: Undefined
Run Code Online (Sandbox Code Playgroud)

有没有办法手动处理 XML 文件(没有包)?

javascript xml node.js

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

原生无服务器与无服务器 Express

现在,我正在遵循无服务器堆栈团队准备的指南。他们正在使用React许多AWS功能,例如lambdaAPI getaway。为了练习它,我正在使用无服务器堆栈重写我的旧Express示例之一。

我还看到了一个名为 的库或工具aws-serverless-expressexpress这个库或工具允许您以这种形式运行您的应用程序serverless

这将是一个奇怪的问题,但我想知道本机无服务器构建和无服务器快速之间的区别。

Cold start已经是劣势了。我知道这一点。除此之外,无服务器快递还有哪些负面或正面的方面?原生无服务器
有哪些消极或积极的一面?

node.js express serverless aws-serverless

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

在Node.js中Req.body不可迭代

我正在构建模拟宁静的API,以更好地学习。我正在使用MongoDB和node.js,为了进行测试,我使用了邮递员。

我有一个发送更新请求的路由器router.patch。在我的数据库中,我有name(字符串),price(数字)和imageProduct(字符串-我保存图像的路径)。

我可以使用 邮递员上的原始格式来更新我nameprice对象,但是我不能使用form-data来更新它。据我了解,在raw-form中,我使用数组格式更新数据。有没有办法在表单数据中做到这一点?使用form-data的目的是要上传新图像,因为我可以更新的路径,但不能上传新图像公用文件夹。我该如何处理?productImage

以原始格式更新数据的示例

[ {"propName": "name"}, {"value": "test"}]
Run Code Online (Sandbox Code Playgroud)

路由器补丁

router.patch('/:productId', checkAuth, (req, res, next) => {
const id = req.params.productId;

const updateOps = {};

for (const ops of req.body) {
    updateOps[ops.propName] = ops.value;
}
Product.updateMany({_id: id}, {$set: updateOps})
    .exec()
    .then(result => {
        res.status(200).json({
            message: 'Product Updated',
            request: {
                type: 'GET',
                url: 'http://localhost:3000/products/' + id
            } …
Run Code Online (Sandbox Code Playgroud)

api rest mongodb node.js postman

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