![](/img/trans.png)
[英]Selenium Web driver: how do I click on image button without ID, NAME
[英]How to access button of div that has no name attribute in selenium web driver?
我寫了這段代碼,想用selenium
web driver
登錄Twitter 。 但是在填寫用戶名后,我無法單擊下一步按鈕,因為它沒有name
或id
屬性。 我該怎么做?
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()
不是每個元素都有一些固定的id
或name
,甚至class
屬性。
在這種特殊情況下,元素具有動態 class 名稱,因此此處最穩定的方法將使用Next
文本。
這可以通過 XPath 定位器來完成,如下所示:
driver.find_element_by_xpath("//span[text()='Next']").click()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.