簡體   English   中英

如何在 selenium web 驅動程序中訪問沒有名稱屬性的 div 按鈕?

[英]How to access button of div that has no name attribute in selenium web driver?

我寫了這段代碼,想用selenium web driver登錄Twitter 但是在填寫用戶名后,我無法單擊下一步按鈕,因為它沒有nameid屬性。 我該怎么做?

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://twitter.com/login?lang=en-gb")
time.sleep(3)
driver.find_element_by_name('text').send_keys('username')
time.sleep(3)
driver.find_element_by_class_name('').click()

time.sleep(3)
print('TEst Completed')

要單擊元素Next ,您可以使用以下任一Locator Strategies

  • 使用xpath

     driver.find_element(By.XPATH, "//span[text()='Next']").click()

在 Chrome 中,您可以通過右鍵單擊感興趣的元素( Next按鈕)並從彈出窗口中選擇 Insepct 來調出檢查器。 然后在 Inspector window 中,右鍵單擊您感興趣的元素(它應該已經突出顯示),然后 select Copy然后Copy full XPath 然后,您可以將結果粘貼到find_element_by_xpath調用中。

順便說一句,如果您希望程序以慢動作運行,那么使用time.sleep調用很好,這樣您就可以看到正在發生的事情,但是如果您希望它以最高速度運行,您應該首先調用driver.implcitly_wait(n)其中n是秒數(例如,3)。 然后,當您在 driver.get 之后執行driver.get調用時,驅動程序將等待最多 3 秒,以便在超時之前出現所需的元素,但不會等待超過必要的時間。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())

try:
    driver = webdriver.Chrome()
    driver.maximize_window()
    # Wait for up to 3 seconds (but maybe less) for sought after
    # elemt to appear:
    driver.implicitly_wait(3)
    driver.get("https://twitter.com/login?lang=en-gb")
    driver.find_element_by_name('text').send_keys('username')
    driver.find_element_by_xpath('/html/body/div/div/div/div[1]/div/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div[1]/div/div[6]/div/span/span').click()
    print('Test Completed')
except Exception as e:
    print("Got exception:", e)
finally:
    # Come here even on exceptions to be sure we "quit" the driver:
    input('Pausing until you hit enter...')
    driver.quit()

不是每個元素都有一些固定的idname ,甚至class屬性。
在這種特殊情況下,元素具有動態 class 名稱,因此此處最穩定的方法將使用Next文本。
這可以通過 XPath 定位器來完成,如下所示:

driver.find_element_by_xpath("//span[text()='Next']").click()

暫無
暫無

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

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