簡體   English   中英

Python selenium select 一個動態按鈕

[英]Python selenium select a dynamic button

我試圖選擇一個按鈕,但我在很多方面都失敗了。 源代碼如下所示:

<div class="sc-fzXfPJ soOmg">
<button type="submit" class="sc-fzXfQu KbRNP SuiButton SuiButton--primary 
   SuiButton--wide">
      <div class="SuiButton-content">
          <div class="SuiButton-label">
               <span class="sc-fzXfNh cnQLcv">
                    <p>LET'S GET IT!</p>

當我嘗試 xpath 它給了我:

/html/body/div[11]/div/div/div[2]/div/div/div/div/div/form/div[3]/button

當我運行時:

driver.find_element_by_xpath('/html/body/div[11]/div/div/div[2]/div/div/div/div/div/form/div[3]/button').click()

它返回一個錯誤。 按鈕文字是:讓我們得到它!

我怎樣才能解決這個問題?

為此使用絕對的 XPath 是個壞主意,因為它們非常脆弱。 嘗試 ChroPath 擴展並找到相關的 XPath,這應該可以解決問題。

有時它會濫用內部的值,因此您可能希望從元素中刪除文本以獲得相對的 XPath 而不依賴於值。

這會有所幫助

driver.find_element_by_xpath("//p[contains(text(),'S GET IT!')]").click()

您可以將Xpath與它的軸一起使用。 要了解有關軸的更多信息,您可以單擊此處

對於您的分辨率,您可以使用此Xpath -

//p[contains(text(),"GET IT"]/ancestor::button[@type='submit'] .

使用絕對Xpath不是一個好主意,因為它很容易損壞,不應該被首選。

如果您遇到任何問題,請告訴我,解決方案是根據您共享的代碼給出的。

話雖如此,使用絕對的 xpath 並不是一個好習慣。

嘗試一些替代方案:

使用 CSS 選擇器:

driver.find_element_by_css_selector("button[type='submit']").click()

使用 Xpath 選擇器:

driver.find_element_by_xpath("//button[@type='submit']").click()

或使用 CSS 選擇器無法使用的按鈕文本:

driver.find_element_by_xpath('//button[contains(.,"LET\'S GET IT!")]').click()

為避免不必要的超時並保持腳本中的同步,請使用如下所述的顯式等待:

wait = WebDriverWait(driver, 20)
wait.until(EC.invisibility_of_element((By.CSS_SELECTOR, "button[type='submit']")))
driver.find_element_by_css_selector("button[type='submit']").click()

為此導入以下 package :

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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