如何使用Selenium Python检测弹出并关闭它(谷歌浏览器)

时间:2017-05-17 08:57:11

标签: python-3.x selenium-chromedriver

嘿我正在废弃Shopify Review Shop Url,但是当我从搜索结果中导航时,会出现一个弹出窗口,我不知道如何检测并关闭它。

这是我的代码

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException


driver = webdriver.Chrome()
url='https://apps.shopify.com/sales-pop'
driver.get(url)

循环并浏览搜索结果

page_number = 2
while True:
    try:
        link = driver.find_element_by_link_text(str(page_number))
    except NoSuchElementException:
        break
    if page_number > 8:
        timeout = 20

        try:
            WebDriverWait(driver,timeout).until(EC.visibility_of_element_located((By.XPATH,'//div[@title="close"]')))
        except TimeoutException:
            print("Timed out waiting for page to load")
            driver.quit()

#Switch to the Popup
        driver.switch_to_alert()
        driver.find_element_by_xpath('//div[@title="close"]').click()
        driver.implicitly_wait(5)
        link.click()
        print(driver.current_url)
        page_number += 1
    else:
     driver.implicitly_wait(5)
     link.click()
     print(driver.current_url)
     page_number += 1

#Scrapping Rating
     stars = driver.find_elements_by_xpath('//figure[@class="resourcesreviews-reviews-star"]')

     starstars = []
     for star in stars:
         starstar=star.find_element_by_xpath('.//div/span')
         starstars.append(starstar.get_attribute('class'))

#Scrapping URL
     urls = driver.find_elements_by_xpath('//figcaption[@class="clearfix"]')

     titles=[]

     for url in urls:

       title=url.find_element_by_xpath('.//strong/a')
       titles.append(title.get_attribute('href'))


#Print Titles and Rating Side by Side
     for titless, starstarss in zip(titles, starstars):
         print(titless + " " + starstarss)

1 个答案:

答案 0 :(得分:0)

您可以使用WebDriverWaitwindow_handles。具体来说,您可以使用以下内容替换#Switch to Popup部分:

 WebDriverWait(driver, 5).until(lambda d: len(d.window_handles) == 2)
 driver.switch_to_window(driver.window_handles[1]).close()
 driver.switch_to_window(driver.window_handles[0])
相关问题