簡體   English   中英

使用 selenium 找不到按鈕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM