【问题标题】:Copying Xpath directly to Selenium does not work将 Xpath 直接复制到 Selenium 不起作用
【发布时间】:2023-03-06 02:26:01
【问题描述】:

我一直在尝试右键单击并直接从网站复制粘贴 Xpath,我从中得到了这个

//*[@id="WishList"]/div[4]/div/p[1]

然后我尝试执行以下操作:

a = driver.find_element_by_xpath(By.XPATH('//* [@id="WishList"]/div[4]/div/p[1]'))

但是,我收到错误“str”对象不可调用。不能直接复制粘贴Xpaths吗?

【问题讨论】:

    标签: python-3.x selenium xpath selenium-chromedriver


    【解决方案1】:

    你的代码行语法不正确

    请尝试以下方法之一:

    a = driver.find_element_by_xpath('//* [@id="WishList"]/div[4]/div/p[1]')
    a = driver.find_element(By.XPATH, '//* [@id="WishList"]/div[4]/div/p[1]')
    a = driver.find_element('xpath', '//* [@id="WishList"]/div[4]/div/p[1]')
    

    请注意,在 Python 中 By.XPATH 不是一个方法(如在 Java 中),而是一个简单的字符串:By.XPATH == 'xpath'

    如果你想定位动态元素,试试

    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait as wait
    from selenium.webdriver.common.by import By
    
    a = wait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//* [@id="WishList"]/div[4]/div/p[1]')))
    

    【讨论】:

    • 它们都不起作用,它只是说“无法定位元素”,但它是使用检查工具直接从 chrome 复制粘贴:(
    • 您已从已呈现的页面复制(执行 JavaScript),但您的脚本试图在执行 JavaScript 之前查找元素。另一个可能的问题 - 元素可能位于 iframe
    • 哦,那我该如何寻找真正的 xpath 呢?我已将 html 复制粘贴到此处的 pastebin 文件中:pastebin.com/BWvY68zM。我想得到所有

    • 试试//p[@class="head"]
    • 很遗憾我已经尝试过了,它提示完全相同的错误:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","选择器":"//p[@class="head"]"}
    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 2019-12-04
    • 2017-01-29
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多