使用 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'

怎么了?

解决方法

直到 Selenium v3.141.0 使用 定位元素,您可以使用以下语法:

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")>
    
,

请试试这个

driver.find_element_by_xpath("//a[@href='/app/arp/home/profile']")

,

AttributeError: 类型对象“By”没有属性“xpath”。

这意味着您没有导入正确的对象 By

确保在页面顶部添加 import

from selenium.webdriver.common.by import By 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...