【问题标题】:How can I interact with this page? Selenium如何与此页面交互?硒
【发布时间】:2013-12-30 02:08:57
【问题描述】:

我正在尝试使用 python 以及 selenium 和 beautifulsoup 来提取数据/与 Web 应用程序交互。我能够很好地连接和提取一项数据。我遇到的问题是网络应用程序使用“选项卡”系统在同一窗口中打开页面。因此,例如在一个窗口/一个浏览器选项卡中,可能会打开五个不同的应用程序选项卡,其 HTML 格式相似,但数据不同。我希望能够在使用相同的 selenium 驱动程序时关闭这些选项卡。我已将元素缩小到在 HTML 中单击以执行此操作的位置。

看起来像这样

<div class="close" data-ember-action="21">

但是,我似乎无法按照自己的意愿与页面进行交互。

尝试点击我有的这个元素

item.click() #where item is  <div class="close" data-ember-action="21">

HTML 代码如下所示

<div class="tab-content-holder">
  <div class="close" data-ember-action="21">×</div>
  <div class="icon"></div>
</div>

错误信息是

第 171 行,在 closeIt item.click() TypeError: 'NoneType' 对象不可调用

我也曾在另一篇文章 (How to mouseover in python Webdriver ) 中尝试过类似的操作,但运气不佳。

element = driver.find_element_by_class_name("close")
hov = ActionChains(driver).move_to_element(element)
hov.perform() #what's this?
driver.find_element_by_class_name("close").click()

实际上没有错误消息。程序在到达 click() 函数时停止。

我是否缺少一些简单的东西/我应该以其他方式解决这个问题?

【问题讨论】:

    标签: python selenium beautifulsoup


    【解决方案1】:

    问题不清楚...我从您的问题中收集到的是您想要关闭通过单击选项卡打开的弹出窗口。

    据我所知,可以使用类名和这些类名获得的文本来单击选项卡。

    在上面的html中,如果你想点击“X”,请使用下面的代码:

    options = driver.find_elements_by_class_name("close")
    for i in options:
        if i.text == "X":
           i.click()
    

    【讨论】:

    • 这对我有用。我的错误是我试图使用 beautifulsoup 的 find_all 来获取可点击的项目。选项卡是指 Web 应用程序在页面中嵌入了选项卡。非常感谢!
    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多