无法在python上使用selenium webdriver定位元素

时间:2017-03-31 19:23:23

标签: python selenium selenium-webdriver selenium-firefoxdriver

我希望python与selenium webdriver执行以下操作: -

  1. 打开Facebook
  2. 登录
  3. 单击并打开具有“注销”选项的用户窗格
  4. 一个小箭头打开用户窗格

    我写了以下脚本

    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"]
    

    我应该如何找到元素?

2 个答案:

答案 0 :(得分:0)

您没有正确使用WebDriverWait。它应该看起来像WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID,"userNavigationlLabel")))

答案 1 :(得分: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()