python-3.x - 使用 Python 和 Selenium Chrome 驱动程序
问题描述
我希望对如何让 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()
在访问此元素之前,您可能必须添加一些延迟/等待。
最简单的方法是添加延迟
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
推荐阅读
- python - 我发起了一个回调,但它没有按定义工作
- python - 如何卸载 python 3.6 版并保留 3.7 版 OSX
- bash - 这个使用 grep 的 bash 脚本看起来正确吗?
- xamarin.forms - 水印和选定项填充
- c# - 如何立即将实时音频流发送到 IBM Watson Speech-To-Text,而不使用 C# 和 IBM Watson SDK 在本地保存音频文件?
- jupyter-notebook - 不加空行可以合并单元格吗
- java - 如何通过 Android Studio 中的 WebView 实现 Google 地图
- unity3d - 点击按钮时手机上的图形故障
- python - 在 Visual Studio 2017 上的 C++ 文件中包含 python 时出现链接问题
- ncurses - 简单的 ncurses 应用程序对箭头键没有反应