【问题标题】:cannot fill up form because of certain pop up after filling up some textboxes using python selenium使用 python selenium 填充一些文本框后,由于某些弹出窗口无法填写表单
【发布时间】:2022-12-18 11:05:55
【问题描述】:

请帮忙,由于..我认为它是弹出的,我无法继续填写其他文本框 这是我的代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support import  expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import Select
import time

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")

s = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=s,options=options)
main_link = r"https://www.lambdatest.com/selenium-playground/input-form-demo"
driver.get(main_link)
wait = WebDriverWait(driver,30)

name = wait.until(ec.visibility_of_element_located((By.XPATH,"//input[@id='name']")))
name.send_keys("test")
email = driver.find_element(By.XPATH,"//input[@placeholder='Email']")
email.send_keys("test@test.com")
password =  driver.find_element(By.XPATH,"//input[@placeholder='Password']")
password.send_keys("test")
company = driver.find_element(By.XPATH,"//input[@id='company']")
company.send_keys("test")
website = driver.find_element(By.XPATH,"//input[contains(@id,'website')]")
website.send_keys("test")
country = Select(driver.find_element(By.XPATH,"//select[@name='country']"))
country.select_by_visible_text("Philippines")
#pop up occurs here, pls see attached screenshot
time.sleep(5) #close the pop up
city = driver.find_element(By.XPATH,"//input[@placeholder='City']")
city.send_keys("test")
add1 = driver.find_element(By.XPATH,"//input[@id='inputAddress1']")
add1.send_keys("test")
add2 = driver.find_element(By.XPATH,"//input[@id='inputAddress2']")
add2.send_keys("test")
state = driver.find_element(By.XPATH,"//input[@placeholder='State']")
state.send_keys("test")
zip_var = driver.find_element(By.XPATH,"//input[contains(@placeholder,'Zip')]")
zip_var.send_keys("test")
button = driver.find_element(By.XPATH,"//button[text()='Submit']")
button.click()
output = wait.until(ec.visibility_of_element_located((By.XPATH,"//p[contains(@class,'success-msg')]")))
print(output.text)

任何帮助都可以,我已尽我所能,但我正在手动关闭此处所附图像上的关闭按钮。谢谢

【问题讨论】:

    标签: python selenium web-scraping automation


    【解决方案1】:

    看起来您遇到的问题是弹出窗口阻止您与页面上的其他元素进行交互。为了解决这个问题,您可以尝试使用 Selenium 提供的 switch_to_alert() 方法将脚本的焦点切换到弹出窗口。然后,您可以使用 accept() 或 dismiss() 方法来接受或关闭弹出窗口。

    以下是如何使用这些方法的示例: `

    将脚本的焦点切换到弹出窗口

    pop_up = driver.switch_to_alert()

    接受弹出窗口

    pop_up.accept()

    现在您可以与页面上的其他元素进行交互

    city = driver.find_element(By.XPATH,"//input[@placeholder='City']") city.send_keys(“测试”)`

    或者,如果您不想处理弹出窗口而只想关闭它,则可以使用 execute_script() 方法在弹出窗口的关闭按钮上注入 JavaScript click() 事件。这是您如何执行此操作的示例:

    `# 使用 JavaScript 来点击弹窗的关闭按钮 driver.execute_script("document.querySelector('button.close').click()")

    现在您可以与页面上的其他元素进行交互

    city = driver.find_element(By.XPATH,"//input[@placeholder='City']") city.send_keys(“测试”)`

    我希望这有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-14
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      相关资源
      最近更新 更多