2017-03-31 135 views
0

硒webdriver的定位元素我想用Python硒的webdriver做到以下幾點: -不能與蟒蛇

  1. 打開Facebook的
  2. 登錄
  3. 點擊並打開它有用戶窗格「註銷」選項

的小箭頭打開用戶窗格

我寫了下面的腳本

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
driver=webdriver.Firefox() 
def open_url(url): 
    driver.get(url) 
    assert "Facebook" in driver.title 
def login(user_id,user_pass): 
    elem_id=driver.find_element_by_name("email") 
    elem_id.clear() 
    elem_id.send_keys(user_id) 
    elem_pass=driver.find_element_by_name("pass") 
    elem_pass.clear() 
    elem_pass.send_keys(user_pass) 
    elem_pass.send_keys(Keys.RETURN) 
def search(): 
    wait=WebDriverWait(driver,30) 
    pane=driver.find_element_by_id("userNavigationLabel").click() 
open_url("https://www.fb.com") 
login("myuserid","mypass") 
search() 

以下錯誤是什麼,我得到

selenium.common.exceptions.NoSuchElementException: Message: Unable to  
locate element: [id="userNavigationLabel"] 

我應該如何定位元素?

+0

你沒有使用'WebDriverWait'正確,您可以使用下面提及的代碼行數爲您註銷腳本工作。它應該看起來像'WebDriverWait(driver,30).until(EC.presence_of_element_located((「userNavigationLabel」,By.ID))' –

+0

現在我收到以下內容:'selenium.common.exceptions.WebDriverException:Message:未知的定位器策略 userNavigationLabel' – zahlen

+0

對不起,我倒退了,應該是'(By.ID,「userNavigationLabel」)' –

回答

0

您沒有正確使用WebDriverWait。它應該看起來像WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID,"userNavigationlLabel")))

0

我能夠成功地從Facebook註銷。

我可以在你的代碼中看到一個錯誤:

pane=driver.find_element_by_id("userNavigationLabel").click()不正確。

正確的語法:

pane = driver.find_element_by_id("userNavigationLabel") 
pane.click() 

driver.find_element_by_id("logoutMenu").click() 
driver. find_element_by_xpath("//form[contains(@id,'show_me_how_logout')]/../../../..").click()