我正在尝试使用python,以及带有beautifulsoup的selenium来提取数据/与Web应用程序进行交互。我可以连接并提取一个项目的数据。我遇到的问题是Web应用程序使用“tab”系统在同一窗口中打开页面。因此,例如在一个窗口/一个浏览器选项卡中,可能有五个不同的应用选项卡打开,具有类似格式的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()函数时,程序就会停止。
有什么简单的我缺少/我应该采取其他任何替代方法吗?
答案 0 :(得分:0)
问题不明确......我从你的问题中收集到的是你想通过点击一个标签来关闭打开的弹出窗口。
根据我的知识,可以使用类名和通过这些类名获得的文本来单击选项卡。
在上面的html中如果要点击“X”,请使用以下代码:
options = driver.find_elements_by_class_name("close")
for i in options:
if i.text == "X":
i.click()