当前位置: 首页 > 知识库问答 >
问题:

如何解决显式等待时间不够长的问题:selenium python

宰父桐
2023-03-14

我正在尝试编写一个依赖于selenium中最后一个事件的事件序列。首先点击登录,加载一个新的页面,然后点击页面上的滚动框,然后点击滚动框内的按钮,直到滚动框被点击才会被加载。

我试图停止使用time.sleep(x),因为我读到这是不好的做法,我试图了解更多关于硒如何工作的信息。

我得到的不起作用的代码是

from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as ec

    login_box = WebDriverWait(driver, 5).until(
        ec.element_to_be_clickable((By.XPATH, "//*[@id=\"loginAppRoot\"]/div[1]/div[1]/button/span")))
    login_box.click()
    print("login")
    scroll_box = WebDriverWait(driver, 5).until(
        ec.element_to_be_clickable((By.XPATH, "//*[@id=\"searchBarFilterDropdown\"]")))
    scroll_box.click()
    box_inside_scroll = WebDriverWait(driver, 5).until(
        ec.element_to_be_clickable((By.XPATH, "//*[@id=\"global-header\"]/nav[1]/div[2]/div/div[1]/ul/li[44]/a")))
    box_inside_scroll.click()

我能让它工作的唯一方法是在scroll_box.click()之前放一个time.sleep(2)。根据我的理解,网络驱动程序的等待和预期条件应该会否定我使用time.sleep.有人能帮我删除预定义的等待时间吗?

共有1个答案

阎知
2023-03-14

如果您需要selenium等待更长时间,您只需更改超时。如果你只需要多两秒钟,那就试试吧

scroll_box = WebDriverWait(driver, 7).until(
        ec.element_to_be_clickable((By.XPATH, "//*[@id=\"searchBarFilterDropdown\"]")))
    scroll_box.click()

使用WebDriverWait时,在括号中,您的第一个输入是您的驱动程序,第二个是您希望硒在超时之前等待的时间量。您可以尝试 10,而不是 7,因此它会等待 10 秒,然后再尝试单击滚动框。

 类似资料:
  • 我正在使用TestNG框架编写一个selenium脚本。我已经将显式等待定义为在selenium抛出NoSuchElement异常之前的20秒。但脚本在执行过程中没有等待20秒,并在41毫秒内抛出异常。我希望这个脚本在抛出任何异常之前等待(使用显式的wait only)或搜索web元素20秒。 下面是脚本,后面是执行结果。

  • 在这里,我试图从mongodb集合中获取最新的记录键p_id值,但得到的错误如下:SyntaxError:await仅在异步函数中有效。那么如何解决这个问题呢? 数据控制器。js:

  • 问题内容: 我有一个简单地发出一些ajax请求的jQuery代码。 大多数情况下,获得响应所需的时间不到一秒钟,因此我可以将结果显示给用户。 但是有时候(大约需要5%的重载)需要几秒钟的时间(我可以接受,服务器有点忙)。 我想在超过2秒的时间内显示“请稍候”文本。但是不到2秒就不会出现(因此用户不会因快速显示/隐藏消息而感到困惑)。 如何以最有效,最简单的方式制作它? 当前的jQuery代码: 问

  • 我正在努力学习如何正确使用async Wait,但我对它有点共同的想法。 在片段中,我试图构建一个对象数组,其中包含我需要的关于我在组件中上传的文件的信息。问题是this.fileInfo中的对象并没有完全等待返回编码图像的promise,而是在我console.logthis.fileInfo时返回此输出: 如您所见,关键图像是一个值未定义的ZoneAwarePromise。你能帮我修一下吗?

  • 问题内容: 我的两种情况- 1)首先 这使驱动程序有45秒的时间来搜索文本(这是预期的) 2)第二 现在这使驱动程序有 30秒的时间 来搜索文本(不需要) 有没有一种方法可以让selenium仅等待等待时间,而不等待两者中的较大者? 注意-不声明隐式等待时间不是一种选择,因为每次驱动程序无法找到东西时,我都无法让selenium挂起。 使用Selenium版本30,Windows,ff 问题答案:

  • 问题内容: 我在应用程序中显示等待光标时遇到问题。只要鼠标位于定义自己的光标的面板上方,就不会出现等待光标。如果面板不更改光标,则会显示等待光标。 我附上SSCE,以准确解释我的问题。 运行附带的SSCE。 选择第一个选项卡(“默认”)后,单击1000ms菜单项将显示繁忙的光标。 选择第二个选项卡(“更改光标”)后,单击1000ms菜单项不会显示繁忙光标。 我应该如何解决这个问题? 我强烈希望我的