如何使用selenium在新页面上弹出窗口?

yv5phkfx  于 2021-07-13  发布在  Java
关注(0)|答案(3)|浏览(404)

我想知道如何用selenium(或其他框架)在新页面上弹出一个弹出窗口。下面的python代码单击一个按钮,然后打开一个新页面,但我不知道如何复制/粘贴促销代码。你能帮忙吗?

from selenium import webdriver
from time import sleep
from selenium.webdriver import ChromeOptions, Chrome

class Coupons_offers:

def stayOpen(self):
    opts = ChromeOptions()
    opts.add_experimental_option("detach", True)
    driver = Chrome(chrome_options=opts)

def __init__(self):
    self.driver = webdriver.Chrome()
    self.driver.get("https://www.offers.com/scotch-porter/")
    sleep(2)
    self.driver.find_element_by_xpath('//button[@id="_evidon-banner-acceptbutton"]').click()
    sleep(2)
    self.driver.find_element_by_xpath('//body/div[@id="main"]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[3]/div[1]/div[1]/a[1]').click()
    sleep(4)
    self.driver.get("https://www.offers.com/scotch-porter/#offer_id=4467763")
aor9mmx1

aor9mmx11#

模式窗口是从外部url加载的。您可以使用以下代码来解析优惠券代码(只需将offerid替换为您想要的id):

import requests
from bs4 import BeautifulSoup

url = "https://www.offers.com/exit/modal/offerid/4467763/"  # <-- replace offerid here

soup = BeautifulSoup(requests.get(url).content, "html.parser")
print(soup.find(class_="coupon-code").text)

印刷品:

SIGNUP15
dxpyg8gm

dxpyg8gm2#

通过单击 self.driver.find_element_by_xpath('//body/div[@id="main"]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[3]/div[1]/div[1]/a[1]').click() 将打开一个新选项卡。
现在,您必须用 driver.switch_to.window(driver.window_handles[-1]) 在“新建”选项卡上,可以从位于的元素中获取文本
//div[@class='coupon-code'] xpath 现在您可以关闭新打开的选项卡 driver.close 然后切换回上一个选项卡 driver.switch_to.window(driver.window_handles[0]) 请在此处查看更多详细信息

camsedfj

camsedfj3#

听起来您可能需要获取新窗口的窗口句柄并转到它。要调试,请尝试

Whandles = driver.window_handles
print(Whandles)

应该很清楚新窗口的窗口句柄是什么。那你就可以了

driver.switch_to_window_(desiredWindowHandle)

在继续使用新窗口的代码之前。

相关问题