【问题标题】:Click Image Link - Selenium/Python单击图像链接 - Selenium/Python
【发布时间】:2019-12-30 20:43:20
【问题描述】:

试图构建一个网络爬虫,但对于我的生活,我似乎无法点击此链接。无论我尝试什么,我总是会收到 Unable to Locate Element 错误。这是 HTML:

<td colspan="2" width="100" height="100">
<a href="place.php?whichplace=desertbeach">
<img src="https://s3.amazonaws.com/images.kingdomofloathing.com/otherimages/main/map7beach.gif" alt="Desert Beach" title="Desert Beach" width="100" height="100" border="0">
</a>
</td>

我正在尝试单击与 a href 链接关联的链接。尝试通过 css、xpath 等查找元素,但似乎找不到它。有什么帮助吗?

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    点击一个链接会引发WebDriverWaitelement_to_be_clickable() 并跟随CSS选择器。

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a[href="place.php?whichplace=desertbeach"]'))).click()
    

    或 XPATH

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[@href="place.php?whichplace=desertbeach"]'))).click()
    

    您需要导入以下库。

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

    更新


    表格存在于 iframe 内部,您需要先切换它才能单击元素。诱导 WebDriverWait() 和 frame_to_be_available_and_switch_to_it() 并使用 css 选择器。

    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'frame[src="main.php"]')))
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a[href="place.php?whichplace=desertbeach"]'))).click()
    

    【讨论】:

    • 我认为通过运行 non-headless 并将代码中的该点设置为断点,我将绕过等待它加载的需要,至少在测试期间是这样。但是,您的代码给了我一个没有消息的 TimeoutException。我是否需要单击该图像的父 A HREF 而不是图像本身?
    • @cardinalsfan :这解决了您的问题还是仍然存在?
    • 检查表格上方的页面上是否有 iframe。我确定有 iframe。你需要先切换它。你能分享你的网址吗?
    • 是的,看起来有 iframe。链接是kingdomofloathing.com/game.php,但您需要创建一个帐户并登录并在地图(以及HTML)看起来像我的之前进行游戏的某些部分。如果我单击查看框架源,这就是我得到的:jpst.it/1Y-vZ
    • 您只需复制该 iframe 标签并粘贴到此处
    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 2014-07-14
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多