python-3.x 无法定位带有selenium的弹出按钮

bqucvtff  于 2023-02-26  发布在  Python
关注(0)|答案(2)|浏览(189)

我一直试图在网页上使用 selenium ,但这个弹出是克制我这样做。

请注意,弹出窗口仅在您未登录时显示(意味着您必须运行我的代码,以便Selenium为您打开一个没有任何帐户的新浏览器窗口)
我想通过 selenium 点击"不感兴趣"按钮。
我不想每次都手动关闭弹出窗口,有没有办法自动关闭?
下面是我代码:

# relevant packages & modules

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

import time

# relevant website
website = 'https://www.daraz.pk/'

# initialize Chrome
driver = webdriver.Chrome('C:\webdrivers\chromedriver.exe')
# open website
driver.get(website)

#maximize window
driver.maximize_window()

# waiting for popup
time.sleep(5)

# dealing with pop up

# with xpath

pop_up_deny = driver.find_element(By.XPATH , '/html/body/div[9]//div/div/div[3]/button[1]')

pop_up_deny.click()

它引发了此错误:

我的chrome版本:110.0.5481.178(正式版本)(64位)我的 selenium 版本:Chrome驱动程序110.0.5481.77

sulc1iza

sulc1iza1#

popup元素位于Shadow-root元素内,您需要首先到达shadow-root,然后识别按钮not interested

shadowRoot= driver.execute_script('''return document.querySelector("div.airship-html-prompt-shadow").shadowRoot''')
shadowRoot.find_element(By.CSS_SELECTOR,"button.airship-btn.airship-btn-deny").click()
niwlg2el

niwlg2el2#

也许你可以给予时间去寻找按钮。Try-except块提供了显示错误和代码仍然继续工作的功能。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

try:
    pop_up_deny_xpath = "/html/body/div[9]//div/div/div[3]/button[1]"
    pop_up_deny = WebDriverWait(driver, 20).until(
                    EC.visibility_of_element_located((By.XPATH, pop_up_deny_xpath)))
    pop_up_deny.click()
except Exception as e:
    print('Button does not exist', e)

相关问题