输入元素使点击按钮黯然失色 - Python,selenium
Posted
技术标签:
【中文标题】输入元素使点击按钮黯然失色 - Python,selenium【英文标题】:input element overshadows the click button - Python, selenium 【发布时间】:2022-01-16 23:54:13 【问题描述】:我正在尝试发送 PNR,然后单击提交按钮。 PNR 已正确填写,但未单击提交按钮。所以我评论了send_key()
行并检查了提交按钮是否被点击并被点击。但是当我发送 PNR 值并随后单击提交按钮时它不起作用。
以下是相同的快照:
下面是代码:
import time
from selenium import webdriver
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 NoSuchElementException
driver = webdriver.Chrome(executable_path=r'D:/Chrome driver/chromedriver.exe')
driver.get("link")
time.sleep(10)
driver.execute_script("arguments[0].click();", WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-container"]/div/div[1]/div[5]/div[2]/a[6]/div/div[2]/div[1]'))))
#WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@placeholder='PNR']"))).send_keys("PNR")
WebDriverWait(driver, 50).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div[16]/div/div/div/div[3]/div[1]/div'))).click()
谁能帮助我如何使提交按钮起作用?
【问题讨论】:
【参考方案1】:有一种解决方法是在无限循环中不断单击,直到显示下一个弹出窗口或屏幕。
代码:
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("https://www.spicejet.com/")
button = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[text()='GST Invoice']")))
driver.execute_script("arguments[0].click();", button)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[placeholder='PNR']"))).send_keys('AGQR8U')
submit_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[text()='Submit']")))
while True:
submit_btn.click()
try:
if driver.find_element(By.XPATH, "//div[text()='PNR']").is_displayed():
print('PNR is displayed')
break
else:
print('PNR is not displayed yet. Keep retrying submit click')
except:
pass
导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
输出:
PNR is displayed
【讨论】:
你是怎么想出来的? 好吧,我尝试手动点击 2-3 次,它确实有效,所以我自动化了。 打印 PNR 显示的消息需要多长时间?因为我已经运行了,它还没有显示消息。 花了一点时间.. 但这确实有效。您可以减少 webdriverwait 命令中的时间,看看这是否有助于时间优化。 就没有别的办法了吗?完成时间太长。以上是关于输入元素使点击按钮黯然失色 - Python,selenium的主要内容,如果未能解决你的问题,请参考以下文章