[英]Could not find the button using selenium
我正在嘗試各種“查找元素”方法來查找我需要單擊的按鈕
<button data-test-modal-close-btn aria-label="Dismiss" id="ember1106" class="artdeco-modal__dismiss artdeco-button artdeco-button--circle artdeco-button--muted artdeco-button--2 artdeco-button--tertiary ember-view">flex
html碼上面已經說了
我嘗試通過 id 訪問它,但 id 下的 ember 每次都會隨機洗牌。 所以我在 inte.net 上回復了一個答案,我可以使用 xpath 找到 aria label
close_button = self.driver.find_elements_by_css_selector("[aria-label=Dismiss]")
close_button.click()
但它無能為力。 有人可以幫我嗎
您的css selector
是錯誤的,基本上您缺少button
,請嘗試以下代碼:
close_button = self.driver.find_elements_by_css_selector("button[aria-label=Dismiss]")
close_button[0].click()
也因為你已經提到ember1106
是動態生成的
下面的 css 可以幫到你:-
button[id^='ember']
你也可以試試這個:
button[aria-label='Dismiss'][class*='dismiss']
也可以嘗試顯式等待:-
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label=Dismiss]"))).click()
進口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
你的定位器是錯誤的,它應該是button[aria-label=Dismiss]
。
此外,您應該使用find_element_by_css_selector
,而不是find_elements_by_css_selector
。
由於find_elements_by_css_selector
返回一個包含 web 個元素的列表,而不是您可以直接單擊的單個元素。
所以,你的代碼可以是
close_button = self.driver.find_element_by_css_selector("button[aria-label=Dismiss]")
close_button.click()
或者
close_button = self.driver.find_elements_by_css_selector("button[aria-label=Dismiss]")[0]
close_button.click()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.