我寫了這個代碼,并希望登錄到Twitter的使用selenium web driver。但在灌裝后的用戶名我無法點擊的下一個按鈕,因為它不具備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')
uj5u.com熱心網友回復:
在 Chrome 中,您可以通過滑鼠右鍵單擊感興趣的元素(Next按鈕)并從彈出視窗中選擇檢查來調出檢查器。然后在Inspector視窗,你有興趣(它應該已經被高亮顯示),并選擇在元素上單擊滑鼠右鍵Copy,然后Copy full XPath。然后,您可以將結果粘貼到find_element_by_xpath呼叫中。
順便說一句,time.sleep如果您希望程式以慢動作運行以便您可以看到正在發生的事情,則使用呼叫是可以的,但是如果您希望它以最高速度運行,您應該首先呼叫driver.implcitly_wait(n)wheren是一些秒數(例如, 3)。然后,當您執行 find_element 呼叫后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()
更新



uj5u.com熱心網友回復:
要單擊元素,Next您可以使用以下任一定位器策略:
使用xpath和
text():driver.find_element(By.XPATH, "//span[text()='Next']").click()使用xpath和
contains():driver.find_element(By.XPATH, "//span[contains(., 'Next')]").click()
uj5u.com熱心網友回復:
無每一個元素都會有一些固定的id或者name甚至是class屬性。
在這種特殊情況下,元素具有動態類名,因此這里最穩定的方法將使用Next文本。
這可以使用 XPath 定位器來完成,如下所示:
driver.find_element_by_xpath("//span[text()='Next']").click()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/397405.html
