卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章65601本站已运行4129

注入的下拉值

注入的下拉值

公开学习是伟大的,当你有一个团队愿意帮助你做一些看似简单的事情,但你却因为错误的事情而陷入过度思考时,它确实可以帮助你打出你的想法、行动和计划内容确实让你沮丧。在这种情况下,获取我可以在调试器中看到的值就是问题所在

自动化需要检查页面元素 - 并且下拉选择器会触发潜在的不同元素。另外,根据登录的用户,该下拉列表中可能有不同的选项。然后,我可以在下拉列表中获取用户可用的选项,获取它们的值,循环浏览它们,并验证页面上的每组元素。

我的测试帐户下拉菜单中有四个选项,因此我预算了几个小时来完成每个步骤。获得合同有点简单:下拉列表是一个选择元素,因此带有选项的 QuerySelectorAllAsync() 作为我想要获取的项目只是有点令人沮丧。我认为这是我第一次使用 IElementHandles,但如果它们都这么简单,那我就很好了!我已经为之前的测试硬编码了一个特定选项,因此我知道我需要的信息。为了确保这一点,我检查了硬编码信息 - 是的,这有效!

嗯,我认为我很好 - 为了确保我拥有正确的信息(我们刚刚更新了证书,因此有一个更好的连接到环境的选项)我在测试帐户的下拉列表中添加了额外的项目。作为 C Sharp 的新手,我不知道更改会产生什么影响,但想确保我返回的信息是正确的!事实证明,其中一项更改更新了我正在使用的 SqlConnectionString:我从错误的环境中拉取!一位开发人员花时间查看我的代码,并验证它是否正确。我们继续寻找,他们检查了连接字符串。事实证明这就是问题所在,值得庆幸的是,这是一个简单的更正,我无需寻求帮助即可完成。我确实问过,然后在等待会议开始时弄清楚了。

第 1 步已完成:我可以访问正确的数据。获取用户信息对我来说是一个更熟悉的过程。这是“将电子邮件与用户 ID 匹配”调用并将其分配给变量。我正在逐步进行这些测试,并且这将被多次使用。我决定让代码更简洁一些。将有多种方法来访问特定于用户的信息,因此它们将被隐藏在自己的类中。它将使未来的代码阅读变得更容易,并且更有组织性。

我现在知道我的用户 ID 以及可用的下拉选项。现在是时候做一个我希望会很简单的事情了:循环浏览选项。我知道 foreach 循环目前是一个不错的选择。从长远来看,这可能不是正确的选择,但我以“让它发挥作用,然后让它变得漂亮”的态度来对待这个问题。然后系统就向我抱怨了。它想知道如果选择器为空会发生什么。而且这是一件合理的事情,但我却想完成任务!因此,我们开始讨论“如何进行空检查”。事实证明,这是一个简单的单行更新,它将使用数据并使用硬编码值,如果碰巧没有数据(并且要发送紧急日志消息!),则该值是默认选项。

一些研究,似乎 EvaluateAsync(value => value.textContent 应该给我需要的信息!但它没有。使用调试器运行它(以及下一行的断点)表明它给了我下拉列表中显示的文本,但不是值,显示它正在执行我要求的操作,现在我可以在调试器中看到该值!预览 – 现在如何获得它?

对 JSHandle@ 的一些研究向我展示了另一个我需要重点关注的技能提升领域。以及其他一些尝试来获取正确的信息。这 45 分钟很慷慨:是时候再次寻求帮助了。另一位开发人员有一些时间,我看到了打字指示器。差不多到了我担心的地步了。

看起来 lambda 是用来输入更复杂的函数——这是团队中的一个人不熟悉的。但是,正如我怀疑的那样,我使用了错误的值类型来获得正确的答案。快速更改为 select => select.value 为我提供了所需的信息!

现在让本节的其余部分接受此信息。原始的硬编码语句具有该值,包括语句中的分号。使用它作为变量时,系统会抱怨分号。我将尝试使用正则表达式获取分号之前的值,然后输入该值。但首先,我认为需要再喝一杯咖啡。

我对自己的编码方式并不满意,咖啡帮了我的忙。我传递了两个 lambda,因此我将尝试将它们组合起来,看看是否可行。到目前为止,它看起来很有希望。它成功了!除了我的 foreach 循环,但这是另一个会话的问题。

卓越飞翔博客
上一篇: 了解 Go 的垃圾收集器:详细指南
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏