当前位置: 首页 > 面试题库 >

webdriver等待python中的ajax请求

解飞语
2023-03-14
问题内容

目前,我正在编写使用ajax进行搜索的webdriver测试。如果在键入搜索内容之后并按Enter键之前添加显式等待,则测试效果很好。

wd.find_element_by_xpath("//div[@class='searchbox']/input").send_keys("obama")
time.sleep(2)
wd.find_element_by_xpath("//div[@class='searchbox']/input").send_keys(Keys.RETURN)

wd.find_element_by_xpath("//div[@class='searchbox']/input").send_keys("obama")
wd.find_element_by_xpath("//div[@class='searchbox']/input").send_keys(Keys.RETURN)

失败。我正在使用1个虚拟CPU在ec2上运行测试。我怀疑,即使在发送与搜索相关的GET请求之前,我也按回车键;如果在建议之前按回车键,它将失败。

有没有更好的方法来添加显式等待?


问题答案:

您确实可以添加一个明确的等待,以等待诸如

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0

ff = webdriver.Firefox()
ff.get("http://somedomain/url_that_delays_loading")
ff.find_element_by_xpath("//div[@class='searchbox']/input").send_keys("obama")

try:
    element = WebDriverWait(ff, 10).until(EC.presence_of_element_located((By.ID, "keywordSuggestion")))
finally:
    ff.find_element_by_xpath("//div[@class='searchbox']/input").send_keys(Keys.RETURN)
    ff.quit()

请参阅:http :
//docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-and-implicit-
waits



 类似资料:
  • 问题内容: 我正在尝试编写一个JS代码,如果给定的数字已经存在于数据库中,它将取消“ btn_submit”按钮.onclick事件。我使用AJAX向数据库查询给定的编号,并确定是否应将数据发送到将上传问题的.php站点。为了确定这一点,我需要numOfRows变量的值,但是因为我在AJAX中将其设置为0,所以validation()函数将在我的AJAX查询完成之前完成,这将导致始终表示给定数字不

  • 我正在为基于角度的应用程序创建测试,我需要帮助。我必须创建一个等待,这将等待,直到所有挂起的请求将被处理。基本上,在我的场景中,我希望标记一个复选框,但它只有在GET请求完成时才可用,如果我使用简单的,一切都很好,但我知道这不是解决这个问题的可靠方法。我尝试了两种方法: 我也试过: 15秒后超时,似乎不起作用。请帮助,如果你可以,据我所知,我需要执行JavaScript代码,我是新手在它。

  • 问题内容: 我正在使用Selenium 2 WebDriver来测试使用AJAX的UI。 有没有一种方法可以使驱动程序稍稍等待Ajax请求将完成。 基本上我有这个: 问题答案:

  • 问题内容: 我需要等到我所有的ajax函数都完成后,再继续执行。 我的特殊情况是,在提交表单之前,我需要翻译表单中的某些字段。我通过ajax调用将其转换为外部站点。根据表单中的某些值,我需要进行更多或更少的翻译。完成所有翻译后(如果有),我必须使用ajax验证表单,如果表单有效,则提交。 这是我的方法: 首先,我有一个函数发送ajax调用并对接收到的数据进行处理: 然后,当要提交表单时,我将执行以

  • 问题内容: 我已经看到和在使用selenium的代码。使用轮询技术,即它将针对特定的每个固定间隔进行轮询。我想知道如何处理? 考虑以下Java示例: 监视器是否可单击,或者等待18秒钟再单击? 问题答案: 在您的示例中,在超时之前,将持续18秒(每0.5秒)查找一次“帐户”。 是的子类。在其中,您可以配置更多选项以及最长的等待时间,例如轮询间隔,忽略的异常等。此外,在您的代码中,您无需等待,然后可

  • 登录后,页面将重定向到一个页面(我想等待页面加载),在那里我通过标记名查找元素, 在这里,我想给出显式等待查找元素,我想等待它的所有可见性或存在。我的网页中只有两个输入。如果我长时间使用隐式等待,代码将起作用。但它各不相同。所以我决定给出显式等待,我怎么能给出显式等待查找元素?或者我如何检查列表中第二个的可见性(列出我的ipt)。即,我的输入(1)。当我给出所有元素()的可见性时,就像下面一样,它