我找不到下面的html元素。
<span class="tabComboBoxName" id="tab-ui-id-1565209097494" aria-hidden="true">20/07/2019</span>
我尝试了以下代码:
elem = browser.find_elements_by_xpath("//class[@id='tab-ui-id-1565209097494']")
elem = browser.find_elements_by_class_name('tabComboBoxName')
elem = browser.find_elements_by_id('tab-ui-id-1565209097494')
对于这些尝试,我得到了一个空列表。
答案 0 :(得分:1)
该元素是动态生成的元素,因此要定位该元素,需要为所需的visibility_of_element_located()
引入 WebDriverWait ,并且可以使用以下任一Locator Strategies:< / p>
使用CSS_SELECTOR
:
element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.tabComboBoxName[id^='tab-ui-id-']")))
使用XPATH
:
element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@class='tabComboBoxName' and starts-with(@id, 'tab-ui-id-')][contains(., '20/07/2019')]")))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
答案 1 :(得分:0)
<iframe>
(如果属于)-您需要先switch_to() ShadowDOM元素所在的iframe,然后再尝试找到它尝试使用另一个locator strategy,例如,您可以坚持使用元素文本,例如:
//span[text()='20/07/2019']