【问题标题】:Remove elements from a open Webbrowser with JavaScript使用 JavaScript 从打开的 Web 浏览器中删除元素
【发布时间】:2014-02-08 10:33:09
【问题描述】:

我正在尝试通过在打开的浏览器上执行 javascript 来删除具有“RemoveByMe”类的所有元素。我之前自己创建了这些元素。

我从 Python 调用该 javascript:Selenium 控制浏览器,并将 javascript 发送到打开的浏览器。但我认为问题出在 javascript 方面,原因在下一行。

执行每个脚本的python代码是:

Browser.execute_script("script here")

到目前为止,我已经尝试了以下 javascript 代码:

$('.RemoveByMe').remove();

这会给出以下错误信息:

#WebDriverException: Message: u'$ is not defined' ; Stacktrace: 
    at anonymous

这个错误似乎来自python方面,所以我测试了更多的javascript代码:

var DocElements = document.getElementsByTagName('RemoveByMe');for(var i = 0; i < DocElements.length; i++){DocElements[i].parentNode.removeChild(DocElements[0]);}

这个没有抛出任何错误(确认 python 端正在工作),但仍然没有删除元素。 (javascript 无法删除它们)

所有经过测试的 javascript 代码都可以在某些网站上运行,但 in some others 不行。 这让我认为问题出在网站上,阻止了 javascript 删除元素。 (虽然我可以成功添加它们)

我怎么能跳过预防措施?

【问题讨论】:

    标签: javascript python selenium element


    【解决方案1】:

    第一个显然好像没有定义jQuery。

    第二个看起来很接近,尽管您需要 document.getElementsByClassName('RemoveByMe') ... 而不是 getElementsTagName 因为您想通过 CSS 类获取元素。

    【讨论】:

    • 谢谢。是的,它实际上是“by_Tag”、“by_Class”和我正在搜索的实际类名之间的不匹配。感谢您指出,这让我重新寻找所有这些并解决了它:)
    【解决方案2】:
    $('.RemoveByMe').remove();
    

    那个 sn-p 是 jQuery Code,一个 Javascript 库。

    您可以在此线程中找到解决问题的方法: Remove all elements of a certain class with JavaScript

    【讨论】:

    • 谢谢。我已经看过了,所以我实际上在循环中运行给定的代码,直到没有更多的匹配。事实是该代码成功地从某些网站(全部)中删除了这些元素,并且在给定的链接中它只是不能,并且与其他脚本相同。 www1.sedecatastro.gob.es/CYCBienInmueble/OVCBusqueda.aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2011-01-15
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多