【问题标题】:Using variables within a string - WebDriver C#在字符串中使用变量 - WebDriver C#
【发布时间】:2018-01-04 13:24:16
【问题描述】:

我正在尝试使用通用字符串作为变量来使我的代码更简洁,但是 Selenium WebDriver 不断抛出以下异常:

OpenQA.Selenium.WebDriverTimeoutException InvalidSelectorException:无效选择器:指定了无效或非法的选择器

我认为可以通过字符串插值来完成,如下所示:

string common = "\"[data - test - code ^= 'ABC'] > ";

new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(2)).Until(ExpectedConditions.ElementIsVisible((By.CssSelector($"{common}td.result__td.result__td--test > img"))));

...但没有快乐。有什么想法吗?

谢谢

【问题讨论】:

  • 字符串插值语法正确。尝试查看其结果是否相关:"[data - test - code ^= 'ABC'] > td.result__td.result__td--test > img"
  • 这正是我所期望的结果,但我不知道如何检查这个,我不明白为什么 Selenium 抱怨选择器无效
  • 您要匹配的是data - test - code 还是data-test-code?只需Console.WriteLine($"{common}td.result__td.result__td--test > img"),看看它是否符合您的预期。

标签: c# selenium selenium-webdriver string-interpolation


【解决方案1】:

Selenium 无法处理像data - test - code 这样的属性。例如data-test-code(不带空格)是可以接受的。您需要找到另一种方法来定位该元素。

顺便说一句,您在选择器的开头有一个多余的"

【讨论】:

  • 我的猜测是空格是复制/粘贴错误的结果。如果他尝试,string common = "[data-test-code ^= 'ABC'] > "; 我敢打赌它会奏效。
  • 这不是复制/粘贴错误;我真的在寻找数据 - 测试 - 代码 - 听起来这似乎是不可能的,所以我想我只需要不使用变量而只需重复代码:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
相关资源
最近更新 更多