【问题标题】:How to loop entire Selenium script X times如何循环整个 Selenium 脚本 X 次
【发布时间】:2013-11-14 12:19:59
【问题描述】:

我有一个 Selenium 脚本,可以登录 Salesforce,使用标准数据创建联系人并保存。

我想询问正在运行的用户使用来自控制台的原始输入创建多少联系人,然后循环脚本 x 次,直到他们被创建。

最好将其添加到下面的代码中吗?或者在终端运行这个python文件的时候在控制台输入一个循环?

谢谢!

注意:我使用了 0-5000 之间的随机整数来创建唯一(足够接近)的姓氏和电子邮件,因此不太可能出现重复。

注意 2:在删除和重复实验之前,我最多只能创建 10 个联系人。

代码如下:

from selenium import webdriver
import unittest
import time
from random import randint

class SalesforceLogin(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get("https://test.salesforce.com")

    def test_salesforce_login(self):
        driver = self.driver
        self.driver.find_element_by_id("username").send_keys("xxxx")
        self.driver.find_element_by_id("password").send_keys("xxxx")
        driver.find_element_by_id("Login").click()
        time.sleep(1)

        # Generate random number and assign to lastRnadom
        lastRandom = randint(2,5000)
        driver.find_element_by_link_text("Contacts").click()
        driver.find_element_by_name("new").click()
        driver.find_element_by_id("name_firstcon2").clear()
        driver.find_element_by_id("name_firstcon2").send_keys("Test")
        driver.find_element_by_id("name_lastcon2").clear()
        driver.find_element_by_id("name_lastcon2").send_keys(lastRandom)
        driver.find_element_by_id("con4").clear()
        driver.find_element_by_id("con4").send_keys("xxxx")
        driver.find_element_by_id("con15").clear()

        # Form an email address from strings and ints
        email = ("test" + "@" + str(lastRandom) + ".com")
        driver.find_element_by_id("con15").send_keys(email)
        driver.find_element_by_id("con10").clear()
        driver.find_element_by_id("con10").send_keys("012345678")
        driver.find_element_by_id("con12").clear()
        driver.find_element_by_id("con12").send_keys("0123456789")
        driver.find_element_by_id("con5").clear()
        driver.find_element_by_id("con5").send_keys("Mr")
        driver.find_element_by_id("con19street").clear()
        driver.find_element_by_id("con19street").send_keys("Made Up Mailing Street")
        driver.find_element_by_id("con19city").clear()
        driver.find_element_by_id("con19city").send_keys("Mailing City")
        driver.find_element_by_id("con19state").clear()
        driver.find_element_by_id("con19state").send_keys("Mailing State")
        driver.find_element_by_id("con19zip").clear()
        driver.find_element_by_id("con19zip").send_keys("Mailing Zip")
        driver.find_element_by_id("con19country").clear()
        driver.find_element_by_id("con19country").send_keys("Mailing Country")
        driver.find_element_by_id("con18street").clear()
        driver.find_element_by_id("con18street").send_keys("Other Street")
        driver.find_element_by_id("con18city").clear()
        driver.find_element_by_id("con18city").send_keys("Other City")
        driver.find_element_by_id("con18state").clear()
        driver.find_element_by_id("con18state").send_keys("Other State")
        driver.find_element_by_id("con18zip").clear()
        driver.find_element_by_id("con18zip").send_keys("Other Zip")
        driver.find_element_by_id("con18country").clear()
        driver.find_element_by_id("con18country").send_keys("Other Country")
        driver.find_element_by_id("con11").clear()
        driver.find_element_by_id("con11").send_keys("Fax")
        driver.find_element_by_id("con13").clear()
        driver.find_element_by_id("con13").send_keys("Home Phone")
        driver.find_element_by_id("con14").clear()
        driver.find_element_by_id("con14").send_keys("Other Phone")
        driver.find_element_by_id("con16").clear()
        driver.find_element_by_id("con16").send_keys("Assistant")
        driver.find_element_by_id("con17").clear()
        driver.find_element_by_id("con17").send_keys("Asst. Phone")
        driver.find_element_by_id("con20").click()
        driver.find_element_by_id("con20").clear()
        driver.find_element_by_id("con20").send_keys("Description")
        driver.find_element_by_name("save").click()

    def tearDown(self):
        self.driver.quit()

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

【问题讨论】:

  • 如果您想重复此操作 x 次 - 为什么不用循环围绕创建代码?或者你想执行整个类,所以 setUp()tearDown() 重复,而不是?
  • 嗨,马克,我尝试在代码顶部添加一个循环,但是当它到达脚本底部时它就会停止。我错过了什么吗?
  • 就我个人而言,我只是使用了for counter in range(0, 10) 循环。在您发表评论之前在您的行上声明:“# Generate random number and assignment to lastRnadom”。因此,它应该执行您的随机数生成器和帐户创建该次数。

标签: python loops selenium salesforce


【解决方案1】:

循环它我们使用并发。遗憾的是,我不能向您推荐任何代码,因为我正在用 java 编写脚本。

您的代码也缺少显式等待,因此在处理过程中可能会失败。

最好的问候, 米哈乌·费利扬丘克

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 2020-09-04
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多