【发布时间】:2020-01-14 08:59:58
【问题描述】:
在 Visual Studio 中使用 Selenium。我正在尝试单击列表中的项目。该项目具有唯一的 ID。
CA-41107005-00000040
我不想引用实际的 ID 号,而是希望通过引用将存储项目 ID 的字符串变量来使测试更加动态。我称这个变量为:changeActionNumber
我试过点击这样的项目:
wait.Until(ExpectedConditions.ElementToBeClickable(By.LinkText($"{changeActionNumber}"))).Click();
还有这样的:
wait.Until(ExpectedConditions.ElementToBeClickable(By.LinkText(changeActionNumber))).Click();
但两种情况都给出了相同的错误:
Message: OpenQA.Selenium.WebDriverTimeoutException : Timed out after 10 seconds
----> OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"link text","selector":"CA-41107005-00000040"}
(Session info: chrome=77.0.3865.75)
使用LinkText时不能使用变量吗?
【问题讨论】:
-
看这个问题:stackoverflow.com/q/20380720/578411 看来By.LinkText对页面结构很严格。虽然我希望您必须使用所显示的 html 来处理代码,但页面的其他部分可能对您不利。
-
如果你使用字符串常量而不是变量会发生什么?
-
这个元素是否在 IFRAME 中?
-
请检查是否有@JeffC 提到的任何 iframe。
-
这应该可以。您可以尝试几个调试步骤:在查找元素之前添加睡眠(注意,您最终应该使用等待而不是睡眠)在进行查找之前打印出变量 changeActionNumber。
标签: c# string visual-studio selenium linktext