Java Selenium webdriver 表达式通过 ccs 查找以开头和结尾的动态元素
Java Selenium webdriver expression finding dynamic element by ccs that starts with and ends with
我需要找到以下 HTML 元素。现在,这个“id”名称是动态的,末尾的 int“0”会发生变化,但我知道它会是什么。 "0-0" 中的第一个整数也会改变,但改变什么并不重要。
<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+"']"));
你已经足够接近了。您需要从 id
的开头删除 #
因为 #
本身表示 id
属性。
动态说明CSS_SELECTOR
要仅考虑 href
和 data-drupal-link-system-path
属性的静态部分,您可以在 css-selectors 中使用以下通配符:
$ :表示属性值 以
结尾
^ : 表示属性值 以
开头
所以最细化的 css_selector 将是:
div[id^='ui-select-choices-row-'][id$='" +count+ "']
解决方案
您的有效代码行将是:
driver.findElement(By.cssSelector("div[id^='ui-select-choices-row-'][id$='" +count+ "']"));
注意:int
为关键字,使用其他名称作为变量名。
参考资料
您可以在以下位置找到一些相关的详细讨论:
- Finding elements by CSS selector with ChromeDriver (Selenium) in Python
我需要找到以下 HTML 元素。现在,这个“id”名称是动态的,末尾的 int“0”会发生变化,但我知道它会是什么。 "0-0" 中的第一个整数也会改变,但改变什么并不重要。
<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+"']"));
你已经足够接近了。您需要从 id
的开头删除 #
因为 #
本身表示 id
属性。
动态说明CSS_SELECTOR
要仅考虑 href
和 data-drupal-link-system-path
属性的静态部分,您可以在 css-selectors 中使用以下通配符:
$ :表示属性值 以
结尾^ : 表示属性值 以
开头
所以最细化的 css_selector 将是:
div[id^='ui-select-choices-row-'][id$='" +count+ "']
解决方案
您的有效代码行将是:
driver.findElement(By.cssSelector("div[id^='ui-select-choices-row-'][id$='" +count+ "']"));
注意:int
为关键字,使用其他名称作为变量名。
参考资料
您可以在以下位置找到一些相关的详细讨论:
- Finding elements by CSS selector with ChromeDriver (Selenium) in Python