尝试使用xpath

时间:2019-09-11 10:40:10

标签: python selenium-webdriver xpath window handle

提供商不允许使用连接器访问托管的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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

要在文本为 Exporteren 的元素上click(),必须为element_to_be_clickable()引入 WebDriverWait ,并且可以使用以下任意一种方法Locator Strategies

答案 2 :(得分:-1)

您是否尝试过按类名查找元素?

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