Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

Python加Selenium自动化测试知乎网站(七)设置检查点



根据前面的文章,我们可以对页面元素做很多操作了,可以模拟用户的行为。不过这时只算得上自动化行为,为了测试需要增加一些检查点。这里会介绍一些可以用来做检查点的方法。

1. 可以检查符合条件的元素的个数,比如检查当前页面有多少篇文章

topics = driver.find_elements("xpath", "//div[@class='List-item TopicFeedItem']/div[@class='ContentItem ArticleItem']")
print(len(topics))
assert len(topics) >= 5

2. 可以检查元素是否存在,比如关注按钮是否位于当前页面

focus_topic_button = driver.find_element_by_xpath("//div[@class='TopicActions TopicMetaCard-actions']/button[contains(@class, 'TopicActions-followButton')]")
print(focus_topic_button.is_displayed())

3. 可以检查元素的属性是否正确,比如在关注话题后,关注按钮会变成灰色

focus_topic_button = driver.find_element_by_xpath("//div[@class='TopicActions TopicMetaCard-actions']/button[contains(@class, 'TopicActions-followButton')]")
assert focus_topic_button.get_property("color").find("gray") >= 0
assert focus_topic_button.get_attribute("color").find("gray") >= 0

看起来get_property和get_attribute很类似,他们的区别在于attribute是html中定义的值,是不变的;property则可以是可变的值,比如checked:difference between property and attribute

4. 可以检查元素是否可用,enable或者disable

search_field = driver.find_element_by_xpath("//div[contains(@class, 'AppHeader-SearchBar')]//input")
print(search_field.is_enabled())

5. 可以检查元素是否被选中

print(drop_down_item.is_selected())

6. 可以检查元素的文本,需要注意text和value是不一样的东西

topics = driver.find_elements("xpath", "//div[@class='List-item TopicFeedItem']/div[@class='ContentItem ArticleItem']")
print(topics[0].text)

7. 可以检查元素是否消失,这里一般是expected_conditions和WebDriverWait一起用

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

class NewWait(WebDriverWait):

    def __init__(self, driver, timeout=30):
        super().__init__(driver, timeout)

   def wait_until_element_disappear(self, by, value):
        return self.until_not(EC.presence_of_element_located((by, value)))

8. 检查元素可见、不可见、可点击, 这里也可以是expected_conditions和WebDriverWait一起用

# 接上面

......
self.until(EC.visibility_of_element_located((by, value)))
self.until(EC.invisibility_of_element_located((by, value)))
self.until(EC.element_to_be_clickable((by, value)))

 

下一篇:  Python与C扩展的几种方式
上一篇:  Python加Selenium自动化测试知乎网站(六)特殊操作

共有0条评论

添加评论

暂无评论