关闭阻止页面Selenium的web横幅

2024-09-29 21:35:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我打算在this website上做刮擦。在过去的几周里,我做得很好,但是今天他们添加了一个宣传横幅,显示了宣传并阻止页面中的元素被点击。有一个X关闭了这个横幅(但它并没有重新引导我到一个新的网站,它只是隐藏了横幅,并使页面中的所有元素都可以再次单击。在

我正在努力

browser.find_element_by_xpath("//*[@id={0}]".format(bannerid)).click()

其中bannerid是"sas_closeButton_6077476",但是我得到了错误

File "/home/vladimir/Documents/Projects/Real-Estate_Market/metrocuadrado_get_links.py", line 52, in get_links close_banner(driver, "sas_closeButton_6077476") File "/home/vladimir/Documents/Projects/Real-Estate_Market/metrocuadrado_get_links.py", line 12, in close_banner browser.find_element_by_xpath("//[@id={0}]".format(bannerid)).click() File "/home/vladimir/anaconda3/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 293, in find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) File "/home/vladimir/anaconda3/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 752, in find_element 'value': value})['value'] File "/home/vladimir/anaconda3/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute self.error_handler.check_response(response) File "/home/vladimir/anaconda3/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//[@id=sas_closeButton_6077476]"}
(Session info: chrome=53.0.2785.143) (Driver info: chromedriver=2.22,platform=Linux 4.4.0-45-generic x86_64)

我不知道该怎么解释。基本上元素不存在(但是当我查看HTML代码时,我发现这个元素存在于与横幅的“生存时间”相对应的一段时间内。如何关闭此横幅?在

谢谢你的帮助。在

更新:

我现在正在使用以下代码:

^{pr2}$

在这段代码之后,会有更多的代码在分页器上迭代,以便从每个页面获取一些信息。在这段代码中,也使用了close_banner函数,但它太长了,无法复制。但是错误发生在上面显示的代码中。另外,对于用time.sleep()而不是selenium模块给出的等待等待的错误做法表示歉意。在

这是我iPad上的横幅视图

enter image description here


Tags: 代码inpy元素homebyseleniumline
1条回答
网友
1楼 · 发布于 2024-09-29 21:35:52

至少有一个问题-占位符周围缺少引号,请替换:

"//*[@id={0}]".format(bannerid)

有:

^{pr2}$

或者,您可以直接使用find_element_by_id()方法:

browser.find_element_by_id(bannerid).click()

请注意,您可能也有一个“时机”的问题。尝试wait for the presence of the element via ^{} and ^{} expected condition。在

相关问题 更多 >

    热门问题