問題描述
我需要找到以下 HTML 元素.現在,這個id"name 是動態的,就像 int 0";最后會改變,但我知道它會是什么.0-0"中的第一個 int也會改變,但會是什么都無所謂.
我嘗試了下面的代碼來查找以#ui-select-choices-row-"開頭的元素.并以所需的int"輸入結束,但沒有按預期找到它.關于我在這里做錯了什么有什么建議嗎?
嘗試 1:
driver.findElement(By.cssSelector("div[id^='#ui-select-choices-row-'] 和 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
為關鍵字,變量名使用其他名稱.
參考文獻
您可以在以下位置找到一些相關的詳細討論:
- 通過 CSS 選擇器查找元素在 Python 中使用 ChromeDriver (Selenium)
- 如何在通過 Selenium 和 Python 實現自動化的同時使用 xpath/css 選擇器在 drupal 8 網站中單擊動態鏈接
- 如何使用 Selenium 和 Python 獲取內部具有動態部分的選擇器?
I have the below HTML element that I need to find. Now, this "id" name is dynamic in the way that the int "0" at the end will change, but I know what it will be. The first int in "0-0" will also change, but it doesn't matter what it will be.
<div id="ui-select-choices-row-0-0">
I've tried the below code that looks for an element that starts with "#ui-select-choices-row-" and ends with the desired input of "int", but it's not finding it as expected. Any suggestions on what I'm doing wrong here?
Attempt 1:
driver.findElement(By.cssSelector("div[id^='#ui-select-choices-row-'] and div[id$='"+int+" div']"));
Attempt 2:
driver.findElement(By.cssSelector("div[id^='ui-select-choices-row-'] and div[id$='"+int+"']"));
解決方案 You were close enough. You need to remove the #
from the beginning of the id
as #
itself denotes the id
attribute.
Explanation of the dynamic CSS_SELECTOR
To consider only the static part of href
and data-drupal-link-system-path
attributes you can use the following wildcards in css-selectors:
$ : To indicate an attribute value ends with
^ : To indicate an attribute value starts with
So the most granular css_selector would be :
div[id^='ui-select-choices-row-'][id$='" +count+ "']
Solution
Your effective line of code will be:
driver.findElement(By.cssSelector("div[id^='ui-select-choices-row-'][id$='" +count+ "']"));
Note: int
is a keyword, use other names as the variable name.
References
You can find a couple of relevant detailed discussions in:
- Finding elements by CSS selector with ChromeDriver (Selenium) in Python
- How to click a dynamic link with in a drupal 8 website using xpath/css selector while automating through Selenium and Python
- How to get selectors with dynamic part inside using Selenium with Python?
這篇關于Java Selenium webdriver表達式通過ccs查找以開頭和結尾的動態元素的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!