尝试使用 xpath 查找元素时收到错误消息 "no such element: Unable to locate element"
receiving error message "no such element: Unable to locate element" when trying to find an element with xpath
提供商不允许使用连接器访问托管的 MariaDB。因此,我尝试使用带有 Selenium 的 Python 脚本导出一些表。我没有设法找到/单击 phpMyAdmin 的导出按钮。
我尝试使用通过 Chrome 浏览器获得的 XPATH 来定位该按钮。
我将 Chrome、driver、Selenium 更新到最新版本。试图让 driver 等待:
(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='navigationbar']/ul[@id='topmenu']//li//img[@title='Exporteren']"))).click())
问题是由于某种原因,driver 找不到按钮。
我尝试通过 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" /> 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" /> 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"}
您是否尝试过通过 Class 名称定位元素?
content = driver.find_element_by_class_name('icon ic_s_status')
content = driver.find_element_by_class_name('icon ic_b_export')
To click()
在文本为 Exporteren 的元素上,您必须为 element_to_be_clickable()
引入 WebDriverWait您可以使用以下任一项 :
使用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
您可以在以下位置找到一些相关讨论:
最近激活window:driver.switch_to_window(driver.window_handles[-1])
提供商不允许使用连接器访问托管的 MariaDB。因此,我尝试使用带有 Selenium 的 Python 脚本导出一些表。我没有设法找到/单击 phpMyAdmin 的导出按钮。
我尝试使用通过 Chrome 浏览器获得的 XPATH 来定位该按钮。 我将 Chrome、driver、Selenium 更新到最新版本。试图让 driver 等待:
(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='navigationbar']/ul[@id='topmenu']//li//img[@title='Exporteren']"))).click())
问题是由于某种原因,driver 找不到按钮。 我尝试通过 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" /> 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" /> 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"}
您是否尝试过通过 Class 名称定位元素?
content = driver.find_element_by_class_name('icon ic_s_status')
content = driver.find_element_by_class_name('icon ic_b_export')
To click()
在文本为 Exporteren 的元素上,您必须为 element_to_be_clickable()
引入 WebDriverWait您可以使用以下任一项
使用
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
您可以在以下位置找到一些相关讨论:
最近激活window:driver.switch_to_window(driver.window_handles[-1])