猿问

硒等到颜色改变

我需要我的代码等到按钮改变颜色。

我使用了下面的代码,但它有时会失败,因为该项目不再可访问(由于回发)。


概述我正在尝试做的事情:


当我单击网站上的保存按钮时,在一段未知的时间内一切都变成灰色,然后使用 asp.net 回发。使用硒,我试图等到按钮不再是灰色并且回发已完成。判断回发是否完成的唯一方法是颜色是否不再是灰色。


代码:


def element_colour_check (self, locator, expected_color):

    # loop to retry if element is still loading

    for f in range(0,10)

        try:

            element = self.driver.find_element_by_id(locator)

            hex_color = Color.from_string(element.value_of_css_property("background-color")).hex


            #check to see if element is correct colour

            if (hex_color == expected_color) == True:

                return True

            else:

                sleep(1)

                continue


        except Exception as e:              

            sleep(1)

            continue

    raise self.insert_error("Element did not change colour")

调用函数:


element_color_loading_check("save_btn", "#17a2b8")

HTML:


<input type="submit" name="save_btn" id=" save_btn " class="btn btn-info col-sm-12" value="Home">

请注意,当按钮为灰色时,类名不会改变


白衣染霜花
浏览 88回答 1
1回答

largeQ

Wait您应该使用专为这种情况设计的Selenium 。他们的自定义预期条件示例非常接近您所追求的。您甚至可以通过CSS 定位器(&nbsp;)使用presence_of_element_located预期条件By.CSS您可以根据他们的示例将此逻辑更改为您自己的逻辑。&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;self.css_class&nbsp;in&nbsp;element.get_attribute("class"):&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;element
随时随地看视频慕课网APP

相关分类

Python
我要回答