【问题标题】:Problem with selenium, closing the main window when opening the popup. How get href from this link?硒问题,打开弹出窗口时关闭主窗口。如何从此链接获取href?
【发布时间】:2020-05-17 08:53:41
【问题描述】:

我的问题是,当您单击链接时,会打开一个弹出窗口,但是在使用 selenium 时,它会打开,但会关闭主窗口。我使用.click()打开链接

这是html:

<a class="do do-task btn btn-sm btn-primary btn-block" href="javascript:;"
 data-task-id="13054765" data-do-class="do-task" 
data-getcomment-href="/tasks/getcomment/" data-check-count="0" 
data-max-check-count="2" data-point-text="10 points">
<i class="far FA-star"></I> 10 points</a>

点击功能:

driver = webdriver.Chrome('chromedriver.exe')


def click_tasks():
    tasks = driver.find_elements_by_class_name('btn-block')[7:]
    print(tasks[0].text)
    tasks[0].click()

你可以找到href,但我不知道如何。

帮助我了解如何获取href 或在您打开弹出窗口时使主窗口不关闭。我将不胜感激。

【问题讨论】:

  • 请检查驱动配置,同时放源码。
  • body 上可能有一个事件监听器来处理点击,但是如果没有看到页面上的标记和脚本就很难说。 href 用处不大。
  • 我对此不太了解,但是我可以从处理程序中获取链接吗?还是用pyautogui更好?
  • 如果弹出窗口 url 是您想要的,您可以从位置栏(或将驱动程序切换到该窗口后的 driver.current_url)获取 url,也可以从脚本本身获取。 (脚本可能会在回调中从服务器获取一个 var...)
  • 你知道为什么打开弹窗时主窗口会关闭吗?

标签: javascript python html python-3.x selenium


【解决方案1】:

假设您已初始化像 driver = webdriver.Chrome() 这样的驱动程序,根据您发布的 html 获取 href 的一种方法是:

your_href=driver.find_element_by_class_name('do do-task btn btn-sm btn-primary btn-block').get_property('href')

【讨论】:

  • 这没有帮助,因为在 href=javascript:;使用您的代码作为链接,我得到“javascript:;”或“关于:空白”我需要一个直接链接。如果不点击selenium,弹窗会正确打开,主要的东西没有关闭
  • 会不会是你执行的动作太快了?在这种情况下,您可以尝试 WebDriverWait: WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.>))).click()
  • 在使用 WebDriverWait 之前需要这些导入: from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多