无法在 python 上使用 selenium webdriver 定位元素
Can't locate element with selenium webdriver on python
我希望 python 使用 selenium webdriver 执行以下操作:-
- 打开 Facebook
- 登录
- 单击并打开具有 "Logout" 选项的用户窗格
小箭头打开用户窗格
我写了下面的脚本
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"]
我应该如何定位元素?
您没有正确使用 WebDriverWait
。它应该看起来像 WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID,"userNavigationlLabel")))
我可以成功退出 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()
我希望 python 使用 selenium webdriver 执行以下操作:-
- 打开 Facebook
- 登录
- 单击并打开具有 "Logout" 选项的用户窗格
小箭头打开用户窗格
我写了下面的脚本
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"]
我应该如何定位元素?
您没有正确使用 WebDriverWait
。它应该看起来像 WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID,"userNavigationlLabel")))
我可以成功退出 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()