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

2024-10-01 07:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个Python程序来帮助在网站上获得预订。我知道预订的具体时间。 我希望用硒来实现这一点。我的策略是打开10个单独的浏览器窗口,然后让它们以0.1秒的间隔单击“提交”,时间间隔为0.02秒,在预定的具体时间之前0.02秒。 我遇到的问题是,每个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()

Tags: fromimport命令comhttpgetwwwselenium
1条回答
网友
1楼 · 发布于 2024-10-01 07:21:28

您可以尝试使用^{} 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查找元素:

^{pr2}$

另一个有点“疯狂”的选择是使用^{}屏幕自动化工具单击指定的图像(例如按钮的屏幕截图)或屏幕上指定的坐标。在

相关问题 更多 >