使用 Python Selenium 查找元素的问题

问题描述 投票:0回答:1

我正在尝试从以下网站复制数据:https://imljail.shelbycountytn.gov/IML.

该网站有两个按钮,都标有“搜索”。我要按下的按钮具有以下代码:

<table width="300" border="0" align="right" cellpadding="0" cellspacing="0">
<tr align="right" style="color: #000000;"> 
<td><a href = "javascript:setNameSearch()" onkeydown="keyDownNameSearch()"><img src = "../images/button_up_search.gif" alt = "Search Button" /></a> <a href = "javascript:resetNameSearch()" onkeydown="keyDownNameReset()"><img src = "../images/button_up_reset.gif" alt = "Reset Button" /></a></td></tr></table> 

我不需要填写任何字段 - 当您将名称字段留空并单击按钮时,我想要的所有数据都会出现。

我一直在使用 Selenium 并且能够定位/加载页面,但无法找到正确的元素并单击它。关于如何指定此按钮的任何想法?谢谢!

import pandas as pd
import numpy as np
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('URL...)
driver_find_element(By. [tried ID, LINK_TEXT, PARTIAL_LINK_TEXT, etc.]
python selenium-webdriver xpath css-selectors webdriverwait
1个回答
0
投票

鉴于 HTML:

<table width="300" border="0" align="right" cellpadding="0" cellspacing="0">
    <tr align="right" style="color: #000000;"> 
        <td>
            <a href = "javascript:setNameSearch()" onkeydown="keyDownNameSearch()">
                <img src = "../images/button_up_search.gif" alt = "Search Button" />
            </a> 
            <a href = "javascript:resetNameSearch()" onkeydown="keyDownNameReset()">
                <img src = "../images/button_up_reset.gif" alt = "Reset Button" />
            </a>
        </td>
    </tr>
</table>

要单击具有属性

<a>
alt = "Search Button"
元素,您需要为 element_to_be_clickable() 引入 WebDriverWait 并且您可以使用以下任一 定位器策略

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[href*='setNameSearch'] > img[alt='Search Button']"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@href, 'setNameSearch')]/img[@alt='Search Button']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
© www.soinside.com 2019 - 2024. All rights reserved.