使用 selenium xpath 定位元素
Locate an element using selenium xpath
我正在尝试在 chrome 检查代码 <href="app/arp/home/profile">
.
中找到具有以下行的元素
我的台词是:
driver.find_element(By.xpath("//a[@href='/app/arp/home/profile']")).click()
但我收到以下错误:
AttributeError: type object 'By' has no attribute 'xpath'
怎么了?
请试试这个
driver.find_element_by_xpath("//a[@href='/app/arp/home/profile']")
AttributeError: type object 'By' has no attribute 'xpath'.
这意味着您没有导入正确的对象By
。
确保在页面顶部添加 import
:
from selenium.webdriver.common.by import By
直到 v3.141.0 to locate an element using xpath 您可以使用以下语法:
driver.find_element_by_xpath("//a[@href='/app/arp/home/profile']")
但是,在即将发布的版本中 find_element_by_*
commands will be deprecated
def find_element_by_xpath(self, xpath):
"""
Finds an element by xpath.
:Args:
- xpath - The xpath locator of the element to find.
:Returns:
- WebElement - the element if it was found
:Raises:
- NoSuchElementException - if the element wasn't found
:Usage:
::
element = driver.find_element_by_xpath('//div/td[1]')
"""
warnings.warn("find_element_by_* commands are deprecated. Please use find_element() instead")
return self.find_element(by=By.XPATH, value=xpath)
从 Selenium v4.x 开始,有效语法将是:
driver.find_element(By.XPATH, "//a[@href='/app/arp/home/profile']")
一个例子:
代码块:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver.get("https://www.google.com/")
element = driver.find_element(By.NAME, "q")
print(element)
driver.quit()
控制台输出:
<selenium.webdriver.remote.webelement.WebElement (session="04a9fac269c3a9cb724cc72769aed4e0", element="1b8ee8d0-b26a-4c67-be10-615286a4d427")>
我正在尝试在 chrome 检查代码 <href="app/arp/home/profile">
.
我的台词是:
driver.find_element(By.xpath("//a[@href='/app/arp/home/profile']")).click()
但我收到以下错误:
AttributeError: type object 'By' has no attribute 'xpath'
怎么了?
请试试这个
driver.find_element_by_xpath("//a[@href='/app/arp/home/profile']")
AttributeError: type object 'By' has no attribute 'xpath'.
这意味着您没有导入正确的对象By
。
确保在页面顶部添加 import
:
from selenium.webdriver.common.by import By
直到
driver.find_element_by_xpath("//a[@href='/app/arp/home/profile']")
但是,在即将发布的版本中 find_element_by_*
commands will be deprecated
def find_element_by_xpath(self, xpath):
"""
Finds an element by xpath.
:Args:
- xpath - The xpath locator of the element to find.
:Returns:
- WebElement - the element if it was found
:Raises:
- NoSuchElementException - if the element wasn't found
:Usage:
::
element = driver.find_element_by_xpath('//div/td[1]')
"""
warnings.warn("find_element_by_* commands are deprecated. Please use find_element() instead")
return self.find_element(by=By.XPATH, value=xpath)
从 Selenium v4.x 开始,有效语法将是:
driver.find_element(By.XPATH, "//a[@href='/app/arp/home/profile']")
一个例子:
代码块:
from selenium import webdriver from selenium.webdriver.common.by import By driver.get("https://www.google.com/") element = driver.find_element(By.NAME, "q") print(element) driver.quit()
控制台输出:
<selenium.webdriver.remote.webelement.WebElement (session="04a9fac269c3a9cb724cc72769aed4e0", element="1b8ee8d0-b26a-4c67-be10-615286a4d427")>