1

我有以下需要查找的 HTML 元素。现在,这个“id”名称是动态的,最后的int“0”会改变,但我知道它会是什么。"0-0" 中的第一个 int 也会改变,但它是什么并不重要。

<div id="ui-select-choices-row-0-0">

我已经尝试了以下代码,该代码查找以“#ui-select-choices-row-”开头并以所需输入“int”结尾的元素,但没有按预期找到它。关于我在这里做错了什么有什么建议吗?

尝试1:

driver.findElement(By.cssSelector("div[id^='#ui-select-choices-row-'] and div[id$='"+int+" div']"));

尝试2:

driver.findElement(By.cssSelector("div[id^='ui-select-choices-row-'] and div[id$='"+int+"']"));
4

1 回答 1

1

你离得够近了。您需要从as本身表示属性#的开头删除。id#id


动态 CSS_SELECTOR 的解释

要仅考虑静态部分href和属性,您可以在data-drupal-link-system-path中使用以下通配符:

  • $:表示属性值

  • ^ : 表示一个属性值

所以最细粒度的 css_selector 将是:

div[id^='ui-select-choices-row-'][id$='" +count+ "']

解决方案

您的有效代码行将是:

driver.findElement(By.cssSelector("div[id^='ui-select-choices-row-'][id$='" +count+ "']"));

注意int是关键字,变量名使用其他名称。


参考

您可以在以下位置找到一些相关的详细讨论:

于 2021-01-25T23:25:57.793 回答