输入元素使点击按钮黯然失色 - 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的主要内容,如果未能解决你的问题,请参考以下文章

KIVY python:在python代码中使按钮可点击

html代码如何设置一个文本框和按钮,使点击按钮后跳转至新"固定值+输入文本“的网页

如何使可点击的按钮运行子程序? Python 3.X.X

js常用事件

selenium:元素定位

Debug过程中保存function的测试数据到SE37