【问题标题】:Count the number of clicks and return the browser url of clicked link in Selenium, Python在Selenium,Python中统计点击次数并返回点击链接的浏览器url
【发布时间】:2015-08-19 18:19:35
【问题描述】:

我是 Selenium、Python 的初学者,并尝试使用 Python、Selenium Webdriver 自动化横幅测试。

我想记录点击次数,点击后需要检查 URL 是否登陆正确的页面,每次点击我必须保持 5 秒的延迟。

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


class slTest(unittest.TestCase):

def test_santi(self):
    self.browser=webdriver.Ie("C:\Users\chethan\Documents\IEDriverServer.exe")
    self.browser.implicitly_wait(5)
    self.browser.get("http://mywebsite.com/banners/")
    vr=self.browser.execute_script("return initValues")
    print vr
    num=0
    res=self.browser.find_element_by_id("productcontainer")
    links=res.find_elements_by_tag_name("a")
    for link in links:
        wait = WebDriverWait(self.browser, 10)
        element = wait.until(EC.element_to_be_clickable((By.ID,link.get_attribute("id"))))
        element.click()

        print link.get_attribute("id")
        #print self.browser.current_url
        num=num+1

    print num
    self.browser.quit()


if __name__ == "__main__":
unittest.main()

num 的值只有在点击时才会增加,并记录点击后加载的 URL。

【问题讨论】:

    标签: javascript python selenium


    【解决方案1】:

    (我假设您需要在更复杂的环境中执行此操作,而不是简单的计数和检查功能)。

    在这种情况下,你应该装饰 selenium 的 click 方法:

    clickMethod = getattr(selenium.webdriver.remote.webelement.WebElement, 'click')
    if clickMethod.func_name != 'decorated':
        def decorated(*args, **kwargs):
            self.count += 1
    
            start_url = self.driver.current_url
            return_this = clickMethod(*args, **kwargs)
    
            ##
            # you should probably time.sleep() or use javascript to check that page is finished loading
            ##
    
            end_url = self.driver.current_url
            if end_url != start_url:
                self.clicked_url_list.append( end_url )
    
            return return_this
    
        setattr( selenium.webdriver.remote.webelement.WebElement, 'click', decorated )
    

    【讨论】:

    • 我是初学者,我不确定您在说什么,请您详细说明一下如何使用上述内容以及调用此函数的“setattr”。
    • setattr() 用于修改类的属性,例如myClass.attribute。上面的代码用修改/修饰的方法覆盖了 selenium 的 click 方法,该方法将进行计数和 url 检查
    猜你喜欢
    • 1970-01-01
    • 2014-10-06
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多