Java 元素的sendKeys函数应该使用哪种类型的等待?蟒蛇硒

Java 元素的sendKeys函数应该使用哪种类型的等待?蟒蛇硒,java,python,selenium,selenium-webdriver,Java,Python,Selenium,Selenium Webdriver,如果我必须使用sendKeys为可能加载缓慢或被动画阻碍的元素属性设置值,我应该使用哪种类型的wait for elemnt 目前,我使用selenium的预期条件库中的元素的可见性,但由于某些原因,有时键入未完成,光标在元素上闪烁,就好像找到了元素,但没有插入值一样 我不确定元素的可见性是否是正确的用例,你们有什么建议吗 编辑:这是一个更“挑选你的大脑”类型的问题,而我希望了解更好的用例,如果有任何适用于我上面描述的。如果需要任何其他信息,我很乐意在这里补充 我使用xpath和值调用的方法,作

如果我必须使用sendKeys为可能加载缓慢或被动画阻碍的元素属性设置值,我应该使用哪种类型的wait for elemnt

目前,我使用selenium的预期条件库中的元素的可见性,但由于某些原因,有时键入未完成,光标在元素上闪烁,就好像找到了元素,但没有插入值一样

我不确定元素的可见性是否是正确的用例,你们有什么建议吗

编辑:这是一个更“挑选你的大脑”类型的问题,而我希望了解更好的用例,如果有任何适用于我上面描述的。如果需要任何其他信息,我很乐意在这里补充

我使用xpath和值调用的方法,作为强制输入:

    def type_js(self, xpath, value, enter=None, priority=None, enable_Logging=True, js=None, classValue=None, forLoopPause=0.1, type_Token=False):

    if isinstance(value, int) == True:
        value = str(value)

    if enable_Logging == True:
        try:
            WebDriverWait(self.browser, 10).until(ec.visibility_of_element_located((By.XPATH, xpath)))
            elemnt = self.browser.find_element_by_xpath(xpath)
            elemnt.clear()

            if type_Token == True:
                elemnt.click()
                from pynput.keyboard import Key, Controller
                for i in list(value):
                    # elemnt.send_keys(i)
                    keyboard = Controller()
                    keyboard.press(str(i))
                    keyboard.release(str(i))
                    time.sleep(1)
            else:
                if js == True:
                    self.browser.execute_script(
                        "arguments[0].setAttribute('value', '{}');".format(value.replace('\n', '')),
                        self.browser.find_element_by_xpath("{}".format(xpath)))
                else:
                    for i in list('{}'.format(value)):
                        elemnt.send_keys(i)
                        time.sleep(forLoopPause)
                    if enter != None:
                        elemnt.send_keys(Keys.ENTER)

            utilities.loggingObj.priority_handler(xpath=xpath, priority=priority, action_type='Type',
                                                     isException=False, browser=self.browser)

        except(NoSuchElementException, StaleElementReferenceException) as e:
            print(
                'exceptie {} pentru xPath : {}\nException Stack Trace : {}'.format(str(e), xpath,
                                                                                   e))
            utilities.loggingObj.priority_handler(xpath=xpath, priority=priority, action_type='Type',
                                                     isException=True,
                                                     exeption='exceptie {} pentru xPath : {}\nException Stack Trace : {}'.format(
                                                         str(e), xpath,
                                                         e), browser=self.browser)
            return False

        except(TimeoutException) as e_timeout:
            print(
                'exceptie {} pentru xPath : {}\nException Stack Trace : Elementul nu a fost vizibil pe pagina in 3 sec de wait (TimeoutException)'.format(
                    str(e_timeout), xpath))
            utilities.loggingObj.priority_handler(xpath=xpath, priority=priority, action_type='Type',
                                                     isException=True, exeption=
                                                     'exceptie {} pentru xPath : {}\nException Stack Trace : Elementul nu a fost vizibil pe pagina in 3 sec de wait (TimeoutException)'.format(
                                                         str(e_timeout), xpath), browser=self.browser)

看一下等待时间,它可能会对你有所帮助

SeleniumWebDriver提供两种类型的等待—隐式和显式。 显式等待使WebDriver等待特定条件发生 在继续执行之前。含蓄的等待会使人失望 WebDriver在尝试访问时轮询DOM一段时间 定位一个元素


您可以使用元素进行单击。如果没有任何效果,请尝试java脚本执行器。使用与代码、日志和屏幕图像相关的更多信息更新问题。该问题每运行50次测试就会出现一次或两次,将使用我用于尽快键入的方法进行更新。虽然这不是帖子的目标,但我认为你必须在
WebDriverWait(self.browser,10)中使用“clickable”。直到(ec.visibility\u of_element\u located((By.XPATH,XPATH))
而不是检查元素的可见性。是的,这是我以前使用的,但我认为还有一些我没有读过的功能,或者一些更聪明的方法来实现这一点。虽然我认为在这种情况下“点击”会更好,但是,感谢这些伙伴,我想知道我的用例是否不是最佳的。谢谢你!