弹出窗口的文本未显示在html标记中,如何使用python + selenium检查它?

问题描述 投票:0回答:1

我正在使用 selenium + python 设计一个自动测试并面临所描述的问题。

当您单击“注册”按钮时,会出现一个带有文本的弹出窗口。我需要检查这个弹出窗口中的文本是否正确。 问题是这个窗口不是 html 布局的一部分,所以我无法使用 selenium 访问它。请问您能建议如何解决这个问题吗?弹出窗口

脚本如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from supporting_scripts import generate_random_string
from supporting_scripts import password
from configuration import chrome_options
import time


driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)


class Registration:

    driver.execute_script("window.open('https://site.example.com/service/welcome', '_blank');")

    window_handles = driver.window_handles

    driver.switch_to.window(window_handles[-1])

    Button_Registration = WebDriverWait(driver, 60).until(
        ec.element_to_be_clickable((By.XPATH, "/html/body/div[2]/div[3]/div/div[2]/p[1]")))
    Button_Registration.click()
    print('Registration click success ✅ ')

    Button_Registration_Check = WebDriverWait(driver, 60).until(
        ec.element_to_be_clickable((By.XPATH, "/html/body/div[2]/div[2]/div/form/div/button")))
    Button_Registration_Check.click()

    time.sleep(10)

我尝试使用不同的库,但没有一个对我有用。

我确定的是,这个弹出窗口是一个浏览器窗口,它是由于输入规则 - type="email" 而显示的

python selenium-webdriver popup autotest
1个回答
0
投票

您看到的弹出窗口是必需的 FORM 中 INPUT 字段的默认 HTML 行为。举个简单的例子,

<!DOCTYPE html>
<html>
<body>

<form>
    <input required id="username">
    <button type="submit">Submit</button>
</form>

</body>
</html>

当您单击“提交”按钮时,它会显示相同的消息。所以,你不需要验证它。您可以验证的是

required
属性是否位于不同的字段上。这样您就可以确认特定字段是必填字段,并且如果提交表单时未填写该字段,则会显示默认消息。


如果您有兴趣,我重写了您的代码以简化它和您的定位器,添加了等待等。

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

URL = "https://it.videomost.com/service/welcome?lang=en"
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(URL)

wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH, "//p[text()='Sign up']"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Sign Up']"))).click()
© www.soinside.com 2019 - 2024. All rights reserved.