使用 Python 和 Selenium Chrome 驱动程序

Working with Python and Selenium Chrome Driver

我希望得到一些关于如何让 selenium 与 href 一起工作的澄清或建议我已经尝试通过几乎所有可能的元素来选择它。

我的最终目标是遍历每个“案例编号”并单击它,完成后将每个案例添加到列表中,如果它不在列表中,请单击它直到完成。

<td class="x-grid3-col x-grid3-cell x-grid3-td-CASES_CASE_NUMBER " style="width:172px;" tabindex="0"><div class="x-grid3-cell-inner x-grid3-col-CASES_CASE_NUMBER" id="5005a00001rezYE_CASES_CASE_NUMBER"><a href="/5005a00001rezYE">0000000</a></div></td>

<div class="x-grid3-cell-inner x-grid3-col-CASES_CASE_NUMBER" id="5005a00001rezYE_CASES_CASE_NUMBER"><a href="/5005a00001rezYE">0000000</a></div>

<a href="/5005a00001rezYE">0000000</a>

clicky = driver.find_element_by_css_selector("//div[@id='5005a00001rezYE_CASES_CASE_NUMBER']").click()

我也试过这个元素(这会让我想做的事情更容易)


<a href="/5005a00001uLh3i/e?retURL=%2F500%3Ffcf%3D00B0b000007JS3z%26rolodexIndex%3D-1%26page%3D1"><span>Edit</span></a>
<span>Edit</span>

clicky = driver.find_element_by_xpath("span[contains(text(),'Edit')]").click()
clicky = driver.find_element_by_css_selector("span[Edit]").click()

我不确定这个定位器是否正确和唯一,但你可以试试这个:

clicky = driver.find_element_by_xpath("//span[contains(text(),'Edit')]").click()

在访问此元素之前,您可能必须添加一些延迟/等待。
最简单的方法就是加一个delay

time.sleep(5)
clicky = driver.find_element_by_xpath("//span[contains(text(),'Edit')]").click()

虽然推荐的方法是添加显式等待,如下所示:

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//span[contains(text(),'Edit')]"))).click()

为此,您需要添加这些导入:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC