为了账号安全,请及时绑定邮箱和手机立即绑定

尝试使用 xpath 查找元素时收到错误消息“没有这样的元素:无法找到元素”

尝试使用 xpath 查找元素时收到错误消息“没有这样的元素:无法找到元素”

翻过高山走不出你 2022-05-24 15:31:15
提供商不允许使用连接器访问托管的 MariaDB。因此,我尝试使用带有 Selenium 的 Python 脚本导出一些表。我无法找到/单击 phpMyAdmin 的导出按钮。我尝试使用通过 Chrome 浏览器获得的 XPATH 来定位该按钮。我将 Chrome、驱动程序、Selenium 更新到了最新版本。试图让驱动程序等待:(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='navigationbar']/ul[@id='topmenu']//li//img[@title='Exporteren']"))).click())问题是由于某种原因,驱动程序找不到该按钮。我尝试按 xpath、class、css 搜索……但没有成功。我在 html 代码中找不到任何框架。下面是一些 html 代码(这似乎在问题中得到解释......)HTML:    <div class="navigationbar"><ul id="topmenu"  class="resizable-menu">    <li>            <a href="server_status.php" class="tab">            <img src="themes/dot.gif" title="Status" alt="Status" class="icon ic_s_status" />&nbsp;Status            </a>        </li>    <li>            <a href="server_export.php" class="tab">            <img src="themes/dot.gif" title="Exporteren" alt="Exporteren" class="icon ic_b_export" />&nbsp;Exporteren            </a>        </li>    <li>代码试验:python    btnexp = driver.find_element_by_xpath("//*[@id='topmenu']/li[4]/a/img")    btnexp.click()错误信息:no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='topmenu']/li[4]/a/img"}
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

激活最近的窗口:driver.switch_to_window(driver.window_handles[-1])



查看完整回答
反对 回复 2022-05-24
?
阿晨1998

TA贡献2037条经验 获得超6个赞

要使用文本作为Exporterenclick()的元素,您必须诱导WebDriverWait并且您可以使用以下任一Locator Strategies:element_to_be_clickable()


使用CSS_SELECTOR:


WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.navigationbar > ul#topmenu li img[title='Exporteren']"))).click()

使用XPATH:


WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='navigationbar']/ul[@id='topmenu']//li//img[@title='Exporteren']"))).click()

注意:您必须添加以下导入:


from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC


查看完整回答
反对 回复 2022-05-24
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您是否尝试过按类名定位元素?

content = driver.find_element_by_class_name('icon ic_s_status')
content = driver.find_element_by_class_name('icon ic_b_export')


查看完整回答
反对 回复 2022-05-24
  • 3 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信