python - Selenium click() 无需等待页面加载 Python

标签 python selenium selenium-webdriver

我正在尝试编写一个 Python 程序来帮助在网站上进行预订。我知道可以预订的具体时间。 我希望使用 Selenium 来完成这个任务。我的策略是打开 10 个单独的浏览器窗口,然后让它们在可以进行预订的具体时间之前 0.02 秒开始,以 0.1 秒的间隔单击“提交”。 我遇到的问题是每个 click() 命令似乎都会等待页面加载,然后再移动到下一个 click() 命令。是否可以单击()然后继续执行下一个命令而不等待页面加载?这些页面将加载,因为它们位于不同的窗口中,我计划在此之后手动与它们交互。这就是我所拥有的。我希望立即触发 click() 命令,但它们没有。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select

browser1 = webdriver.Firefox()
browser1.get('http://www.reservationsite.com')

browser2 = webdriver.Firefox()
browser2.get('http://www.reservationsite.com')

browser3 = webdriver.Firefox()
browser3.get('http://www.reservationsite.com')

def firstclick():
    elem1 = browser1.find_element_by_id('btnbookdates').click()
    return

def secondclick():
    elem2 = browser2.find_element_by_id('btnbookdates').click()
    return

def thirdclick():
    elem3 = browser3.find_element_by_id('btnbookdates').click()
    return

firstclick()
secondclick()
thirdclick()

最佳答案

您可以尝试使用 unstable load strategy 加载 Firefox (未测试):

There is beta feature to make firefox not wait for the full page to load after calling .get or .click. This may cause immediate find's to break, so please be sure to use an implicit or explicit wait too. This is only available for Firefox and not other browsers.

profile = webdriver.FirefoxProfile()
profile.set_preference("webdriver.load.strategy", "unstable")

driver = webdriver.Firefox(firefox_profile=profile) 

将其与 Explicit Wait 结合起来通过 id 查找元素:

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

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "btnbookdates"))
)
element.click()

作为替代方案,有点“疯狂”的选项是使用 sikuli屏幕自动化工具,用于单击指定图像(例如按钮的屏幕截图)或屏幕上的指定坐标。

关于python - Selenium click() 无需等待页面加载 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28702637/

相关文章:

java - 如何在 Selenium (Java) 中的 "NoSuchElementException"之后继续执行?

javascript - 使用 selenium webdriver 执行外部 .js 文件

javascript - 输入电子邮件地址后,我需要司机按标签两次

python - 如何在python中更改Tkinter按钮的on_press "animation"

python - pytest - 如何使其递归搜索?

python - X 轴标签被图形截断 - Python Matplotlib

firefox - 无法通过ssh启动selenium浏览器

java - 无法使用带有 Selenium/testNG 的 xpath 节点获取 yt channel 名称

javascript - 在javascript中循环遍历django列表

Python Selenium 滚动到底部 Google Photos 相册