Ejemplo n.º 1
0
    writer.writerow(('標題','時間'))

    for i in range(2):
        page+=1
        html = driver.page_source
        sp=BeautifulSoup(html,"html.parser")
        search_h3=sp.select("div.part_list_2 > h3 > a")#標題
        search_a=sp.select("div.part_list_2 > h3 > span")#時間
       
        
        for i in range(5):
            print(page)
            print(search_h3[i].text,end=' ')
            print(search_a[i].text)
            
            writer.writerow([search_h3[i].text,search_a[i].text])
           

           

    
        driver.find_element_by_id("selD").click()
        Select(driver.find_element_by_id("selD")).select_by_visible_text("5")
        driver.find_element_by_id("selD").click()
        driver.find_element_by_id("button").click()
        time.sleep(1)  # 必須加入等待,否則會有誤動作
    
driver.close()               #關閉瀏覽器


sys.exit    
Ejemplo n.º 2
0
 def select_by_visible_text(self, locator, text):
     select = Select(self.find(locator))
     select.select_by_visible_text(text)
Ejemplo n.º 3
0
        #go next
        driver.find_element_by_css_selector("section.pagination :last-child").click()

driver.close()

#start dowloading
driver = webdriver.Safari()
driver.maximize_window()
for i in range(len(movies_links)):
    driver.get(movies_links[i])
    good_seats = []

    try:
        element_present = EC.visibility_of_element_located((By.ID, 'AreaRepeater_TicketRepeater_0_quantityddl_0'))
        WebDriverWait(driver, timeout).until(element_present)
        dropdown = Select(driver.find_element_by_id("AreaRepeater_TicketRepeater_0_quantityddl_0"))
        dropdown.select_by_value(str(group_no))
        button = driver.find_element_by_id("NewCustomerCheckoutButton")
        button.click()

        element_present = EC.visibility_of_element_located((By.CSS_SELECTOR, '.standard'))
        WebDriverWait(driver, timeout).until(element_present)

        #Print the image if it has good seats
        avaliable_seats = driver.find_elements_by_css_selector(".standard.availableSeat")
        if group_no > 1:
            for seat in avaliable_seats:
                #left 200 and less than 390 | top 206 and less than 494
                left = float(seat.value_of_css_property("left")[:-2])
                top = float(seat.value_of_css_property("top")[:-2])
                if left > 160.0 and left < 385.0 and top > 236.0 and top < 464.0:
Ejemplo n.º 4
0
# coding = utf-8
'''
@author = super_fazai
@File    : select_处理下拉框.py
@connect : [email protected]
'''

from selenium.webdriver.support.ui import Select  # 导入Select类
from selenium import webdriver

driver = webdriver.PhantomJS()

# 找到name 的选项卡
select = Select(driver.find_element_by_name('status'))

select.select_by_index(1)
select.select_by_value(0)
select.select_by_visible_text('未审核')
'''
以上是三种选择下拉框的方式,它可以根据索引来选择,
可以根据值来选择,可以根据文字来选择。
注意:
    index 索引从 0 开始
    value是option标签的一个属性值,并不是显示在下拉框中的值
    visible_text是在option标签文本的值,是显示在下拉框的值

全部取消选择怎么办?很简单
'''
select.deselect_all()
Ejemplo n.º 5
0
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time

try:
    link = "http://suninjuly.github.io/selects1.html"
    browser = webdriver.Chrome()
    browser.get(link)

    first = browser.find_element_by_id("num1").text
    second = browser.find_element_by_id("num2").text

    sum = str(int(first) + int(second))

    
    select = Select(browser.find_element_by_class_name("custom-select"))
    select.select_by_visible_text(sum)

    btn = browser.find_element_by_class_name("btn")
    btn.click()

finally:
    time.sleep(10)
    browser.quit()
Ejemplo n.º 6
0
    #Находим х и вычисляем функцию
    x = int(browser.find_element_by_id('num1').text)
    #print(x)
    y = int(browser.find_element_by_id('num2').text)
    #print (y)
    z = str(x + y)
    #print (z)

    #browser.find_element_by_id('answer').send_keys(y)

    #Отмечаем чекбокс
    #browser.find_element_by_id('robotCheckbox').click()

    from selenium.webdriver.support.ui import Select
    select = Select(browser.find_element_by_tag_name('select'))
    select.select_by_visible_text(z)

    #Отмечаем радиокнопку
    #browser.find_element_by_id('robotsRule').click()

    #Жмем Submit
    button = browser.find_element_by_css_selector('button.btn')
    button.click()

finally:
    #ожидание чтобы визуально оценить результаты прохождения скрипта
    time.sleep(10)
    #закрываем браузер после всех манипуляций
    browser.quit()
Ejemplo n.º 7
0
 def getDropdownMenuById(
         self, dropMenu_path,
         value):  # find_type定位元素的方式、dropMenu_path下拉框元素的路径、Value下列选项所在的位置索引
     Select(self.driver.find_element_by_id(dropMenu_path)).select_by_index(
         value)
 def birthdayDay(self, daySelect):
     Select(self.driver.find_element(*self.day)).select_by_index(daySelect)
 def birthdayMonth(self, monthSelect):
     Select(
         self.driver.find_element(*self.month)).select_by_index(monthSelect)
Ejemplo n.º 10
0
import math

link = "http://suninjuly.github.io/selects1.html"
link2 = "http://suninjuly.github.io/selects2.html"


def calc(x):
    return str(math.log(abs(12 * math.sin(int(x)))))


try:
    browser = webdriver.Chrome()
    browser.get(link2)

    x = browser.find_element_by_id("num1").text
    y = browser.find_element_by_id("num2").text
    z = int(x) + int(y)

    select = Select(browser.find_element_by_tag_name("select"))
    select.select_by_visible_text(str(z))

    button = browser.find_element_by_css_selector("button.btn")
    button.click()

finally:
    # успеваем скопировать код за 30 секунд
    time.sleep(30)
    # закрываем браузер после всех манипуляций
    browser.quit()

# не забываем оставить пустую строку в конце файла
 def pronounSelect(self, pronounCheck):
     Select(self.driver.find_element(
         *self.pronoun)).select_by_value(pronounCheck)
Ejemplo n.º 12
0
 def change_option_value(self, field_name, option):
     browser = self.app.browser
     if option is not None:
         browser.find_element(By.NAME, field_name).click()
         Select(browser.find_element(
             By.NAME, field_name)).select_by_visible_text(option)
    driver.get(url)
    time.sleep(3)

    # Get rounds' table
    rounds = driver.find_elements_by_class_name('lsm2')
    for round_ in rounds[1:]:  # TEST PURPOSE! Change to: for round_ in rounds[1:]:
        round_.click()
        index = round_.text
        index_leaderboard = str(int(index) - 1)

        Event().wait(2)

        run_again = True
        while run_again:
            select = Select(driver.find_element_by_id('dropSelect'))
            try:
                select.select_by_value(index_leaderboard)  # Set leaderboard round index
                run_again = False
            except:
                print(f'In year: {year} we had an exception..')
                run_again = True
                Event().wait(1)

        Event().wait(3)

        team_leaderboard_list = []

        for row in driver.find_elements_by_id('div_Table1'):
            for team in range(1, TEAMS + 1):
                line = row.find_elements_by_tag_name("tr")[team].text
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time

link = "http://suninjuly.github.io/selects2.html"
browser = webdriver.Chrome()
browser.get(link)

try:
    a = browser.find_element_by_css_selector('#num1').text
    b = browser.find_element_by_css_selector('#num2').text
    select = Select(browser.find_element_by_css_selector('.custom-select'))
    select.select_by_value(str(int(a) + int(b)))
    submit = browser.find_element_by_css_selector('[type="submit"]')
    submit.click()
finally:
    # ожидание чтобы визуально оценить результаты прохождения скрипта
    time.sleep(10)
    # закрываем браузер после всех манипуляций
    browser.quit()
Ejemplo n.º 15
0
        IDPWD_box = driver.find_element_by_id(
            'p_password')  #//*[@id="ctl00_holderContent_txtSubjectName"]
        IDPWD_box.clear()
        IDPWD_box.send_keys(sys.argv[2])
        time.sleep(3)  # Let the user actually see something!
        Verb_box = driver.find_element_by_xpath(
            '//*[@id="table1"]/tbody/tr[6]/td/input'
        )  #////*[@id="ctl00_holderContent_ibtnFull"]
        Verb_box.click()
        time.sleep(3)  # Let the user actually see something!
        Verb_box = driver.find_element_by_xpath(
            '/html/body/form/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[3]/table/tbody/tr[3]/td/table/tbody/tr[3]/td/table/tbody/tr[2]/td[7]/input'
        )
        Verb_box.click()
        time.sleep(3)  # Let the user actually see something!
        ExamSubject = Select(driver.find_element_by_name('OBJECT_Name_TMP'))
        ExamSubject.select_by_index(2)
        QUESTION_NO_box = driver.find_element_by_name(
            'QUESTION_NO')  #//*[@id="ctl00_holderContent_txtSubjectName"]
        QUESTION_NO_box.clear()
        QUESTION_NO_box.send_keys('74')
        EXAMINEE_RSN_box = driver.find_element_by_name(
            'EXAMINEE_RSN')  #//*[@id="ctl00_holderContent_txtSubjectName"]
        EXAMINEE_RSN_box.clear()
        EXAMINEE_RSN_box.send_keys(
            '''考生當初在螢幕上看到的圖非常暗,不明顯,希望可請老師們也在螢幕確認暗度可理解我們考生情況。

建議答案:A B C D
''')
        ChoiceA = driver.find_element_by_xpath('//*[@id="sub"]/input[1]')
        if not ChoiceA.is_selected():
 def birthdayYear(self, yearSelect):
     Select(self.driver.find_element(
         *self.year)).select_by_visible_text(yearSelect)
Ejemplo n.º 17
0
    def test_search_in_python_org(self):  # 登录
        driver = self.drviet
        driver.save_screenshot('xuyun.png')
        driver.get('http://10.0.0.9/login')
        time.sleep(1)
        driver.find_element_by_xpath('//*[@id="username"]').send_keys('Xadmin')
        driver.find_element_by_xpath('//*[@id="username"]').send_keys(Keys.TAB)
        time.sleep(1)
        driver.find_element_by_xpath('//*[@id="password"]').send_keys('123456')
        driver.find_element_by_xpath('//*[@id="password"]').send_keys(Keys.TAB)
        time.sleep(1)
        driver.find_element_by_xpath('//*[@id="loginBtn"]').click()
        time.sleep(1)

        driver.find_element_by_xpath(
            '//*[@id="content"]/div/div[2]/div[1]/div[1]/a').click()  # 添加设备
        time.sleep(1)

        driver.find_element_by_xpath(
            '//*[@id="addDevice"]/div[1]/div').click()  # 点击设备类型选框
        time.sleep(1)

        # 百度了半个小时发现要把display=none设置为display=block设置为可见
        js = 'document.querySelectorAll("select")[0].style.display="block";'
        driver.execute_script(js)
        sel = driver.find_element_by_tag_name('select')
        # 选择value = 1也就是ap选项
        Select(sel).select_by_value('1')
        time.sleep(1)

        #  选择设备型号
        driver.find_element_by_xpath(
            '//*[@id="model_auto_chosen"]/a/span').click()
        time.sleep(1)

        # 导入js方法把display设置为可见
        js = 'document.querySelectorAll("select")[0].style.display="block";'
        driver.execute_script(js)
        model_xpath = '//*[@id="model_auto_chosen"]/div/ul/li[' + str(
            random.randint(1, 9)) + ']'
        time.sleep(2)
        # 点击选择设备型号
        driver.find_element_by_xpath(model_xpath).click()
        time.sleep(2)
        # 点击设备mac填写选项
        driver.find_element_by_xpath('//*[@id="mac"]').click()

        # 定义一个随机生成mac函数
        def randomMAC():
            mac = [
                0x52, 0x54, 0x00,
                random.randint(0x00, 0x7f),
                random.randint(0x00, 0xff),
                random.randint(0x00, 0xff)
            ]
            return ':'.join(map(lambda x: "%02x" % x, mac))

        print(randomMAC())
        # 填写设备mac
        driver.find_element_by_xpath('//*[@id="mac"]').send_keys(randomMAC())
        time.sleep(1)

        # 点击序列号填写框
        driver.find_element_by_xpath('//*[@id="serialNum"]').click()
        time.sleep(1)

        # 生成20长度的数字+字母组合随机字符串
        def generate_random_str(randomlength=20):
            string.digits = '0123456789'
            string.ascii_letters = 'DFGC'
            str_list = [
                random.choice(string.digits + string.ascii_letters)
                for i in range(randomlength)
            ]
            random_str = ''.join(str_list)
            return random_str

        # 输入随机字符串
        driver.find_element_by_xpath('//*[@id="serialNum"]').send_keys(
            generate_random_str())
        time.sleep(2)

        # 点击位置信息输入框
        driver.find_element_by_xpath('//*[@id="positionDescription"]').click()

        def generate_random_str(randomlength=20):
            string.digits = '窗前明月光,疑是地上霜。举头望明月,低头思故乡'
            string.ascii_letters = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM!@#$%^&*()_+?><.//*\|'
            str_list = [
                random.choice(string.digits + string.ascii_letters)
                for i in range(randomlength)
            ]
            random_str = ''.join(str_list)
            return random_str

        driver.find_element_by_xpath(
            '//*[@id="positionDescription"]').send_keys(generate_random_str())
        time.sleep(2)

        # 点击提交添加设备信息
        driver.find_element_by_xpath(
            '//*[@id="addDevice"]/div[7]/div/input').send_keys(Keys.ENTER)
        time.sleep(2)

        # 查询并勾选全部设备
        driver.find_element_by_xpath(
            '//*[@id="content"]/div/div[2]/form/div[16]/button[3]').click()
        time.sleep(1)
        # 点击修改位置
        driver.find_element_by_xpath(
            '//*[@id="content"]/div/div[2]/div[1]/div[1]/button[3]').click()
        time.sleep(1)

        # 生成随机字符串
        def generate_random_str(randomlength=20):
            string.digits = '西风烈,长空雁叫霜晨月,霜晨月,马蹄声碎,喇叭声咽。雄关漫道真如铁,而今迈步从头越,从头越,苍山如海,残阳如血'
            string.ascii_letters = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM!@#$%^&*()_+?><.//*\|'
            str_list = [
                random.choice(string.digits + string.ascii_letters)
                for i in range(randomlength)
            ]
            random_str = ''.join(str_list)
            return random_str

        # 输入随机位置信息字符串
        driver.find_element_by_xpath('//*[@id="position"]').send_keys(
            generate_random_str())
        time.sleep(2)
        # 点击提交
        driver.find_element_by_xpath(
            '//*[@id="updatePosition"]/div/div/div[3]/input').click()
        time.sleep(2)
        # 接受函数方法(确定)
        driver.switch_to.alert.accept()
        time.sleep(2)

        # 查询并勾选全部设备
        driver.find_element_by_xpath(
            '//*[@id="content"]/div/div[2]/form/div[16]/button[3]').click()
        time.sleep(1)
        # 点击修改描述
        driver.find_element_by_xpath(
            '//*[@id="content"]/div/div[2]/div[1]/div[1]/button[4]').click()
        time.sleep(1)

        # 生成随机字符串
        def generate_random_str(randomlength=20):
            string.digits = '北国风光,千里冰封,万里雪飘,望长城内外,惟馀莽莽;大河上下,顿失滔滔。山舞银蛇,原驰蜡象,欲与天公试比高。须晴日,看红妆素裹,分外妖娆'
            string.ascii_letters = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM!@#$%^&*()_+?><.//*\|'
            str_list = [
                random.choice(string.digits + string.ascii_letters)
                for i in range(randomlength)
            ]
            random_str = ''.join(str_list)
            return random_str

        # 输入描述信息随机字符串
        driver.find_element_by_xpath('//*[@id="description"]').send_keys(
            generate_random_str())
        time.sleep(2)
        driver.find_element_by_xpath(
            '//*[@id="updateDescription"]/div/div/div[3]/input').click()
        # 接受函数方法(确定)
        alert = driver.switch_to_alert()
        alert.accept()
        time.sleep(2)
        # 打开终端管理
        driver.find_element_by_xpath(
            '//*[@id="treeMenu"]/li[2]/a/span').click()
        time.sleep(2)
        # 点击项目开局
        driver.find_element_by_xpath(
            '//*[@id="treeMenu"]/li[3]/a/span').click()
        time.sleep(2)
        # 刷新当前页面
        driver.refresh()
        # 点击项目名称
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[1]/div/input').click()
        time.sleep(2)

        # 生成随机字符串
        def generate_random_str(randomlength=20):
            string.digits = '独立寒秋,湘江北去,橘子洲头。看万山红遍,层林尽染;漫江碧透,百舸争流。鹰击长空,鱼翔浅底,万类霜天'
            string.ascii_letters = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM!@#$%^&*()_+?><.//*\|'
            str_list = [
                random.choice(string.digits + string.ascii_letters)
                for i in range(randomlength)
            ]
            random_str = ''.join(str_list)
            return random_str

        time.sleep(2)
        # 输入随机字符串
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[1]/div/input').send_keys(
                generate_random_str())
        time.sleep(2)
        #点击项目地址下拉框
        driver.find_element_by_id('province').click()
        # pro = Select(driver.find_element_by_id('province'))
        # pro.select_by_value('北京市')
        # pro = driver.find_element_by_tag_name('select')
        # ret = Select(pro).options
        # time.sleep(2)
        # ret = Select(pro).options
        # srant = random.Random().choice(ret[0:])
        # Select(pro).deselect_by_value(srant)
        model_xpath = '//*[@id="province"]/option[8]'
        # 点击选择设备型号
        driver.find_element_by_xpath(model_xpath).click()
        time.sleep(2)

        # 点击详细地址输入框
        driver.find_element_by_xpath('//*[@id="street"]').click()

        def generate_random_str(randomlength=20):
            string.digits = '风雨送春归,飞雪迎春到。已是悬崖百丈冰,犹有花枝俏。俏也不争春,只把春来报。待到山花烂漫时,她在丛中'
            string.ascii_letters = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM!@#$%^&*()_+?><.//*\|'
            str_list = [
                random.choice(string.digits + string.ascii_letters)
                for i in range(randomlength)
            ]
            random_str = ''.join(str_list)
            return random_str

        # 输入详细地址随机字符串
        driver.find_element_by_xpath('//*[@id="street"]').send_keys(
            generate_random_str())
        time.sleep(2)
        # 点击行业选框
        driver.find_element_by_xpath('//*[@id="trade_chosen"]/a/span').click()
        js = 'document.querySelectorAll("select")[0].style.display="block";'
        driver.execute_script(js)
        driver.find_element_by_xpath(
            '//*[@id="trade_chosen"]/div/ul/li[3]').click()
        time.sleep(2)
        # 点击输入项目标识
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[6]/div/input').click()
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[6]/div/input').send_keys(
                generate_random_str())
        time.sleep(2)
        # 点击输入项目描述
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[7]/div/textarea').click()
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[7]/div/textarea'
        ).send_keys(generate_random_str())
        time.sleep(2)
        # 点击输入客户密码
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[9]/div/input').click()
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[9]/div/input').send_keys(
                Method.generate_random_int())
        time.sleep(2)
        # 点击输入客户名称
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[10]/div/input').click()
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[10]/div/input').send_keys(
                Method.generate_random_numbers())
        time.sleep(2)
        # 点击输入联系人
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[11]/div/input').click()
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[11]/div/input').send_keys(
                generate_random_str())
        time.sleep(2)
        # 点击输入客户电话
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[12]/div/input').click()
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[12]/div/input').send_keys(
                generate_random_str())
        time.sleep(2)
        # 点击输入客户邮箱
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[13]/div/input').click()
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[13]/div/input').send_keys(
                '*****@*****.**')
        # 选择客户地址
        # pro = Select(driver.find_element_by_id('province'))
        # pro.select_by_value('北京市')
        # pro = driver.find_element_by_tag_name('select')
        # ret = Select(pro).options
        # time.sleep(2)
        # ret = Select(pro).options
        # srant = random.Random().choice(ret[0:])
        # Select(pro).deselect_by_value(srant)
        # 选择客户地址
        time.sleep(2)
        pro = Select(driver.find_element_by_class_name('form-control'))
        ret = Select(pro).options
        srant = random.Random().choice(ret[0:])
        Select(pro).deselect_by_value(srant)
        driver.find_element_by_xpath(
            '//*[@id="addUpdateProject"]/div[1]/div[15]/div/input').click()
        driver.switch_to_alert()
        time.sleep(2)

        driver.find_element_by_xpath('//*[@id="treeMenu"]/li[4]/a').click()
        time.sleep(3)
        driver.find_element_by_xpath(
            '//*[@id="treeMenu"]/li[5]/a/span').click()
        time.sleep(3)
        driver.find_element_by_xpath(
            '//*[@id="treeMenu"]/li[6]/a/span').click()
        time.sleep(3)
        driver.find_element_by_xpath(
            '//*[@id="treeMenu"]/li[7]/a/span').click()
        time.sleep(3)
        driver.find_element_by_xpath(
            '//*[@id="treeMenu"]/li[8]/a/span').click()
        time.sleep(3)
        driver.find_element_by_xpath(
            '//*[@id="treeMenu"]/li[9]/a/span').click()
        time.sleep(3)
 def test_597(self):
     get_driver().maximize_window()
     page = loginpage()
     page.open()
     page.login_field.send_keys(admin_login)
     page.password_field.send_keys(admin_password)
     page.button.click()
     page = ActivityHubPage()
     page.open()
     time.sleep(5)
     page.search_activity_field.send_keys(ActivityName)
     time.sleep(5)
     page.activity_actions.click()
     page.edit_activity.click()
     page = AddEditActivityPage()
     time.sleep(15)
     if page.ticket_maximum.get_attribute("value") == '10':
         page.cancel_button.click()
     else:
         page.ticket_maximum.clear()
         page.ticket_maximum.send_keys('10')
         page.save_button.click()
     time.sleep(5)
     page = EventCalendarPage()  # STEP1
     page.open()
     time.sleep(2)
     select = Select(page.activity_name)
     select.select_by_visible_text(ActivityName)
     time.sleep(5)
     page.hide_events.click()
     time.sleep(5)
     page.event_tickets[0].click()
     time.sleep(5)
     for i in range(0, len(page.event_tickets)):
         if 'Ticket Sold: 0' not in page.manifest_title.get_attribute(
                 "innerText"):
             page.close_button.click()
             time.sleep(5)
             page.event_tickets[i + 1].click()
             time.sleep(5)
             continue
         else:
             time.sleep(5)
             EventHeaderDateTimeList.append(
                 page.date_time_title.get_attribute('textContent'))
             page.add_booking_button.click()  # STEP2
         break
     time.sleep(5)
     page = AdminBookingPage()
     time.sleep(5)
     page.first_tickets_type.send_keys('5')  # STEP3
     time.sleep(5)
     page.second_tickets_type.send_keys('5')
     page.enter_customer_information_button.click()  # STEP6
     time.sleep(5)
     NewFirstName = 'James'
     page.first_name.send_keys(NewFirstName)  # STEP7
     NewLastName = 'James'
     NewFullName = NewFirstName + ' ' + ''.join(NewLastName)
     page.last_name.send_keys(NewLastName)
     NewEmail = ('*****@*****.**')
     page.email_address.send_keys(NewEmail)
     time.sleep(10)
     page.complete_booking_button.click()
     time.sleep(5)
     wait = WebDriverWait(get_driver(), 15)
     wait.until(lambda driver: page.is_element_present('payment_type_list'))
     select = Select(page.payment_type_list)  # STEP8
     PaymentType = "Cash"
     select.select_by_visible_text(PaymentType)
     page.cash_recieved.click()
     page.submit_booking_button.click()
     time.sleep(5)
     assert page.final_alert.get_attribute(
         "textContent") == 'Booking Successful!'
     page.final_alert_ok_button.click()  # STEP9
     page = EventCalendarPage()  # STEP10
     page.open()
     time.sleep(2)
     select = Select(page.activity_name)
     select.select_by_visible_text(ActivityName)
     time.sleep(5)
     page.hide_events.click()
     time.sleep(5)
     page.event_tickets[0].click()
     time.sleep(5)
     for i in range(0, len(page.event_tickets)):  # STEP11
         if EventHeaderDateTimeList[
                 0] != page.date_time_title.get_attribute('textContent'):
             page.close_button.click()
             time.sleep(5)
             page.event_tickets[i + 1].click()
             time.sleep(5)
             continue
         else:
             time.sleep(5)
             assert 'Tickets Sold: 10' in page.manifest_title.get_attribute(
                 "innerText")
             assert 'Ticket Available: 0' in page.manifest_title.get_attribute(
                 "innerText")
             assert '5 Adult' in page.manifest_tickets.get_attribute(
                 "innerText")
             assert '5 Child' in page.manifest_tickets.get_attribute(
                 "innerText")
             page.add_booking_button.click()  # STEP12
         break
     time.sleep(5)
     page = AdminBookingPage()
     time.sleep(5)
     page.first_tickets_type.send_keys('1')  # STEP13
     time.sleep(5)
     assert page.final_alert.get_attribute(
         "textContent"
     ) == 'Booking 1 tickets will overbook this event.  Do you want to continue?'
     page.final_alert_ok_button.click()
     page.second_tickets_type.send_keys('1')
     time.sleep(5)
     assert page.final_alert.get_attribute(
         "textContent"
     ) == 'Booking 2 tickets will overbook this event.  Do you want to continue?'
     page.final_alert_ok_button.click()  # STEP14
     time.sleep(5)
     time.sleep(5)
     assert page.is_element_present(
         'enter_customer_information_button') == True
     page.enter_customer_information_button.click()  # STEP15
     time.sleep(5)
     NewFirstName = 'James'
     page.first_name.send_keys(NewFirstName)  # STEP16
     NewLastName = 'James'
     NewFullName = NewFirstName + ' ' + ''.join(NewLastName)
     page.last_name.send_keys(NewLastName)
     NewEmail = ('*****@*****.**')
     page.email_address.send_keys(NewEmail)
     time.sleep(10)
     page.complete_booking_button.click()
     time.sleep(5)
     wait = WebDriverWait(get_driver(), 15)
     wait.until(lambda driver: page.is_element_present('payment_type_list'))
     select = Select(page.payment_type_list)  # STEP17
     PaymentType = "Cash"
     select.select_by_visible_text(PaymentType)
     page.cash_recieved.click()
     page.submit_booking_button.click()
     time.sleep(5)
     assert page.final_alert.get_attribute(
         "textContent") == 'Booking Successful!'
     page.final_alert_ok_button.click()  # STEP18
     page = EventCalendarPage()  # STEP19
     page.open()
     time.sleep(2)
     select = Select(page.activity_name)
     select.select_by_visible_text(ActivityName)
     time.sleep(5)
     page.event_tickets[0].click()
     time.sleep(5)
     for i in range(0, len(page.event_tickets)):  # STEP11
         if EventHeaderDateTimeList[
                 0] != page.date_time_title.get_attribute('textContent'):
             page.close_button.click()
             time.sleep(5)
             page.event_tickets[i + 1].click()
             time.sleep(5)
             continue
         else:
             time.sleep(5)
         break
     assert 'Tickets Sold: 12' in page.manifest_title.get_attribute(
         "innerText")
     assert 'Ticket Available: -2' in page.manifest_title.get_attribute(
         "innerText")
     assert '6 Adult' in page.manifest_tickets.get_attribute("innerText")
     assert '6 Child' in page.manifest_tickets.get_attribute("innerText")
Ejemplo n.º 19
0
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time

driver=webdriver.Firefox()
driver.get(r"file:///e:\cc.html")
#操作下拉菜单
select=Select(driver.find_element_by_xpath("/html/body/form/select"))
select.select_by_index(1)
usernameEle=driver.find_element_by_name("username")
passwordEle=driver.find_element_by_name("password")
print usernameEle
print passwordEle
usernameEle.clear()
usernameEle.send_keys(u"张三")
time.sleep(2)

passwordEle.clear()
passwordEle.send_keys(u"123456")
time.sleep(2)
#获取登录按钮
loginEle=driver.find_element_by_xpath("//input[@value='Login']")
print loginEle
loginEle.click()
time.sleep(2)




Ejemplo n.º 20
0
 def enterCountry(self):
     select = Select(
         driver1.find_element_by_id(
             configReader.readElementData('BillingAddress', 'country')))
     select.select_by_index(2)
Ejemplo n.º 21
0
 def get_event_job_selectors(self):
     select1 = Select(
         self.element_by_xpath(self.elements.REPORT_EVENT_SELECTOR))
     select2 = Select(
         self.element_by_xpath(self.elements.REPORT_JOB_SELECTOR))
     return select1, select2
def submit_bond(browser, value, issue_date):
    issue_date_elem = browser.find_element_by_name("IssueDate")
    issue_date_elem.clear()
    issue_date_elem.send_keys(issue_date)
    Select(browser.find_element_by_name("Denomination")).select_by_value(value)
    browser.find_element_by_name("btnAdd.x").click()
    def test_wuliu_testcase08_citylist_jiagongdian_factorybalance(self):
        driver = self.driver
        
        driver.get(self.base_url + "/")

        loginclick=driver.find_element_by_css_selector("div#container.container h3.text-center.text-primary a.btn.btn-success.text-center")
        ActionChains(driver).double_click(loginclick).perform()
        driver.find_element_by_id("username").clear()
        driver.find_element_by_id("username").send_keys(USER_NAME)
        driver.find_element_by_id("password").clear()
        driver.find_element_by_id("password").send_keys(PASS_WORD)
        driver.find_element_by_id("login-submit").click()
        time.sleep(2)
        print " the testcase test_wuliu_testcase08_citylist_jiagongdian_factorybalance is ",driver.title
        self.assertEqual(driver.title, u"物流")
        
        conn=MySQLdb.connect(host=mysqlhostname,user=mysqlusername,passwd=mysqlpassword,db=mysqlrongchangdb,charset="utf8")    
        global cursor 
        cursor = conn.cursor() 
        cursor.execute("DELETE FROM outlet_rules")
        conn.commit()
        cursor.close()
        conn.close()
        #driver.find_element_by_css_selector("div.container nav.collapse.navbar-collapse.bs-navbar-collapse ul.nav.navbar-nav li:nth-child(8).active a").click()
        driver.find_element_by_css_selector("div.container > nav > ul > li:nth-child(8) >a").click()
        self.assertEqual(driver.title, u"物流")
        time.sleep(1)
        driver.find_element_by_css_selector("div#container.container div.panel.panel-primary.checkout-order table.table.table-striped.city-table tbody tr:nth-child(2) td:nth-child(2).btn-link a:nth-child(9)").click()
        #html body div#container.container div.panel.panel-primary.checkout-order table.table.table-striped.city-table tbody tr:nth-child(2) td:nth-child(2).btn-link a:nth-child(4).btn.btn-success
        self.assertEqual(driver.title, u"物流")
    
        driver.find_element_by_css_selector("div#container.container >table.table.table-striped> tbody > tr:nth-child(2) > td:nth-last-child(2) > a:last-child").click()
        #div#container.container > tbody > tr:nth-child(2) > td:nth-last-child(2) > a:last-child
        #html body div#container.container table.table.table-striped tbody tr#outlets_279 td a.btn.btn-primary.btn-sm
        self.assertEqual(driver.title, u"物流")
    
        Select(driver.find_element_by_id("outlet_rule_form_category_id")).select_by_visible_text(u"家纺")
        driver.find_element_by_id("outlet_rule_form_discount").clear()
        driver.find_element_by_id("outlet_rule_form_discount").send_keys("22")

        print str(wuliu_utiltools.today())
        driver.find_element_by_id("outlet_rule_form_start_time_display").send_keys(str(wuliu_utiltools.today()))
        #driver.find_element_by_link_text("6").click()
        driver.find_element_by_id("outlet_rule_form_end_time").send_keys(str(wuliu_utiltools.get_day_of_day(3)))
        #driver.find_element_by_link_text("20").click()
        driver.find_element_by_name("commit").click()
        self.assertEqual(driver.title, u"物流")
        time.sleep(2)
        hell=driver.find_element_by_css_selector("div#container.container>div#outlet_rule>table.table.table-striped>tbody>tr:last-child>td:last-child>a").text
        print "the hell rules is ",hell
        #html body div#container.container div#outlet_rule table.table.table-striped tbody tr:last-child td:last-child a.btn.btn-sm.btn-danger
        #driver.find_element_by_xpath(u"(//a[contains(text(),'删除')])[4]").click()
        driver.find_element_by_css_selector("div#container.container>div#outlet_rule>table.table.table-striped>tbody>tr:last-child>td:last-child>a").click()
        #print driver.switch_to_alert().text()
        time.sleep(1)
        self.assertRegexpMatches(self.close_alert_and_get_its_text(), u"^确认删除吗[\s\S]$")
        
        self.assertEqual(driver.title, u"物流")
    
    
        #driver.find_element_by_link_text(u"创建规则").click()
        Select(driver.find_element_by_id("outlet_rule_form_category_id")).select_by_visible_text(u"洗衣")
        driver.find_element_by_id("outlet_rule_form_discount").clear()
        driver.find_element_by_id("outlet_rule_form_discount").send_keys("100")
        
        driver.find_element_by_id("outlet_rule_form_start_time_display").send_keys(str(wuliu_utiltools.today()))
        #driver.find_element_by_link_text("6").click()
        driver.find_element_by_id("outlet_rule_form_end_time").send_keys(str(wuliu_utiltools.get_day_of_day(3)))
        #driver.find_element_by_link_text("20").click()
        driver.find_element_by_name("commit").click()
        self.assertEqual(driver.title, u"物流")
    
        time.sleep(2)

#         driver.find_element_by_id("outlet_rule_form_start_time_display").click()
#         driver.find_element_by_link_text("6").click()
#         driver.find_element_by_id("outlet_rule_form_end_time").click()
#         driver.find_element_by_link_text("20").click()
#         driver.find_element_by_name("commit").click()
        Select(driver.find_element_by_id("outlet_rule_form_category_id")).select_by_visible_text(u"洗鞋")
        driver.find_element_by_id("outlet_rule_form_start_time_display").send_keys(str(wuliu_utiltools.today()))
        #driver.find_element_by_link_text("6").click()
        driver.find_element_by_id("outlet_rule_form_end_time").send_keys(str(wuliu_utiltools.get_day_of_day(3)))
        #driver.find_element_by_link_text("20").click()
        driver.find_element_by_id("outlet_rule_form_discount").clear()
        driver.find_element_by_id("outlet_rule_form_discount").send_keys("2")
        driver.find_element_by_name("commit").click()

        self.assertEqual(driver.title, u"物流")
        time.sleep(2)
        
        #Select(driver.find_element_by_id("outlet_rule_form_category_id")).select_by_visible_text(u"奢侈品")
        Select(driver.find_element_by_id("outlet_rule_form_category_id")).select_by_visible_text(u"家纺")
        driver.find_element_by_id("outlet_rule_form_discount").clear()
        driver.find_element_by_id("outlet_rule_form_discount").send_keys("12")
        
        driver.find_element_by_id("outlet_rule_form_start_time_display").send_keys(str(wuliu_utiltools.today()))
        #driver.find_element_by_link_text("6").click()
        driver.find_element_by_id("outlet_rule_form_end_time").send_keys(str(wuliu_utiltools.get_day_of_day(3)))
        #driver.find_element_by_link_text("20").click()
        driver.find_element_by_name("commit").click()
        self.assertEqual(driver.title, u"物流")
Ejemplo n.º 24
0
def run():
    driver = open_browser()
    driver.get('https://etk.srail.co.kr/cmc/01/selectLoginForm.do')
    driver.implicitly_wait(15)
    driver.find_element_by_id('srchDvNm01').send_keys("")  #아이디
    driver.find_element_by_id('hmpgPwdCphd01').send_keys("")  #비번
    driver.find_element_by_xpath(
        '//*[@id="login-form"]/fieldset/div[1]/div[1]/div[2]/div/div[2]/input'
    ).click()
    driver.implicitly_wait(4)
    sleep(4)
    driver.find_element_by_xpath(
        '//*[@id="search-form"]/fieldset/div[1]/select').click()
    driver.implicitly_wait(1)
    dptRsStnCd = Select(driver.find_element_by_id('dptRsStnCd'))
    dptRsStnCd.select_by_visible_text(dpt)
    sleep(0.4)
    driver.find_element_by_xpath(
        '//*[@id="search-form"]/fieldset/div[2]/select').click()
    driver.implicitly_wait(1)
    arvRsStnCd = Select(driver.find_element_by_id('arvRsStnCd'))
    arvRsStnCd.select_by_visible_text(avl)
    date_ele = driver.find_element_by_xpath(
        '//*[@id="search-form"]/fieldset/div[3]/div/input[1]')
    driver.execute_script(
        "arguments[0].setAttribute('value','{}')".format(dpt_date), date_ele)
    driver.find_element_by_xpath(
        '//*[@id="search-form"]/fieldset/div[4]/select').click()
    dptTm = Select(driver.find_element_by_id('dptTm'))
    dptTm.select_by_visible_text(when)
    sleep(0.4)
    driver.find_element_by_xpath('//*[@id="search-form"]/fieldset/a').click()
    driver.implicitly_wait(2)
    sleep(0.4)
    counter = 1
    while True:
        soup = BeautifulSoup(driver.page_source, 'html.parser')
        trlist = soup.select(
            '#result-form > fieldset > div.tbl_wrap.th_thead > table > tbody > tr'
        )  # [tr,tr,tr,....]
        index = 0
        done = False
        for tdl in trlist:
            if done == False:
                index += 1
                for train_no in train_nums:
                    if tdl.select('.trnNo')[0].text.strip() == str(train_no):
                        if '예약하기' in tdl.select("td")[6].find_all(text='예약하기'):
                            t = "#result-form > fieldset > div.tbl_wrap.th_thead > table > tbody > tr:nth-child(" + str(
                                index) + ") > td:nth-child(7) > a"
                            driver.find_element_by_css_selector(t).click()
                            print(
                                "예약완료------------------------------------------------------------"
                            )
                            done = True
                            # sleep(5)
                            # break
                        else:
                            sleep(0.3)
            else:
                break
        print("loop done. counter : {}".format(counter))
        sleep(1)
        if done == False:
            elm = driver.find_element_by_xpath(
                '//*[@id="search_top_tag"]/input')
            driver.execute_script("arguments[0].click();", elm)
            driver.implicitly_wait(2)
            counter += 1
        else:
            # driver.quit()
            break
        if counter > 1000:
            driver.quit()
            break
Ejemplo n.º 25
0
def getElement(elemType, elemName):
    if elemType == "NAME":
        return WebDriverWait(browser, 100).until(
            EC.presence_of_element_located((By.NAME, elemName)))
    if elemType == "ID":
        return WebDriverWait(browser, 100).until(
            EC.presence_of_element_located((By.ID, elemName)))
    if elemType == "CSS":
        return WebDriverWait(browser, 100).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, elemName)))


for letter1 in alphabet:
    for letter2 in alphabet:
        select = Select(getElement("NAME", "LastOper"))
        select.select_by_visible_text("begins with")
        select = Select(getElement("NAME", "FirstOper"))
        select.select_by_visible_text("begins with")

        name = getElement("NAME", "LastName")
        name.clear()
        name.send_keys(letter1)

        name = getElement("NAME", "FirstName")
        name.clear()
        name.send_keys(letter2)

        browser.find_element_by_name("ButtonChoice").click()
        WebDriverWait(browser, 100).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, "p")))
Ejemplo n.º 26
0
def fill_select(window, select_id, option_value):
    ''' Function to select an option '''
    select_el = Select(window.find_element_by_id(select_id))
    select_el.select_by_value(option_value)
Ejemplo n.º 27
0
from selenium import webdriver

browser = webdriver.Chrome()

link = 'http://suninjuly.github.io/selects1.html'
browser.get(link)

num1 = browser.find_element_by_id('num1').text
num2 = browser.find_element_by_id('num2').text

result = int(num1) + int(num2)

from selenium.webdriver.support.ui import Select

select = Select(browser.find_element_by_id("dropdown"))
select.select_by_value(str(result))

submit = browser.find_element_by_css_selector('button[type="submit"]')
submit.click()
Ejemplo n.º 28
0
 def test_864(self):
     get_driver().maximize_window()
     page = loginpage()
     page.open()
     page.login_field.send_keys(admin_login)
     page.password_field.send_keys(admin_password)
     page.button.click()
     page = ActivityHubPage()
     page.open()
     time.sleep(5)
     page.search_activity_field.send_keys(ActivityName)
     time.sleep(5)
     page.activity_actions.click()
     page.edit_activity.click()
     page = AddEditActivityPage()
     time.sleep(15)
     if page.switcher_minimum_enforce.get_attribute(
             "outerHTML"
     ) != switcher_OFF and page.ticket_minimum.get_attribute(
             'value') == '3':
         page.cancel_button.click()
     else:
         if page.switcher_minimum_enforce.get_attribute(
                 "outerHTML") == switcher_OFF:
             page.switcher_minimum_enforce.click()
             time.sleep(2)
             assert page.switcher_minimum_enforce.get_attribute(
                 "outerHTML") != switcher_OFF  #Tickets Minimum Enforce
         if page.ticket_minimum.get_attribute('value') != '3':
             page.ticket_minimum.clear()
             page.ticket_minimum.send_keys('3')
         page.save_button.click()
     page = EventCalendarPage()  #STEP1
     page.open()
     time.sleep(2)
     select = Select(page.activity_name)
     select.select_by_visible_text(ActivityName)
     time.sleep(5)
     page.hide_events.click()
     time.sleep(5)
     page.event_tickets[0].click()
     time.sleep(5)
     for i in range(0, len(page.event_tickets)):
         if 'Ticket Sold: 0' not in page.manifest_title.get_attribute(
                 "innerText"):
             page.close_button.click()
             time.sleep(5)
             page.event_tickets[i + 1].click()
             time.sleep(5)
             continue
         else:
             time.sleep(5)
             EventHeaderDateTimeList.append(
                 page.date_time_title.get_attribute('textContent'))
             page.add_booking_button.click()  #STEP2
         break
     time.sleep(5)
     page = AdminBookingPage()
     time.sleep(5)
     page.first_tickets_type.send_keys('1')  # STEP3
     time.sleep(5)
     assert page.final_alert.get_attribute(
         "textContent"
     ) == 'Minimum number of tickets (3 tickets) for the event has not been met yet. Do you want to continue?'
     page.alert_cancel_button.click()  # STEP4
     time.sleep(5)
     page.first_tickets_type.clear()
     page.first_tickets_type.send_keys('2')  # STEP5
     time.sleep(10)
     assert page.final_alert.get_attribute(
         "textContent"
     ) == 'Minimum number of tickets (3 tickets) for the event has not been met yet. Do you want to continue?'
     page.final_alert_ok_button.click()  # STEP6
     time.sleep(5)
     assert page.is_element_present(
         'enter_customer_information_button') == True
     page.enter_customer_information_button.click()  # STEP7
     time.sleep(5)
     NewFirstName = 'James'
     page.first_name.send_keys(NewFirstName)  # STEP8
     NewLastName = 'James'
     NewFullName = NewFirstName + ' ' + ''.join(NewLastName)
     page.last_name.send_keys(NewLastName)
     NewEmail = ('*****@*****.**')
     page.email_address.send_keys(NewEmail)
     time.sleep(10)
     page.complete_booking_button.click()  # STEP9
     time.sleep(5)
     wait = WebDriverWait(get_driver(), 15)
     wait.until(lambda driver: page.is_element_present('payment_type_list'))
     select = Select(page.payment_type_list)  # STEP10
     PaymentType = "Cash"
     select.select_by_visible_text(PaymentType)
     page.submit_booking_button.click()  # STEP11
     time.sleep(5)
     assert page.final_alert.get_attribute(
         "textContent") == 'Booking Successful!'
     page.final_alert_ok_button.click()  # STEP12
Ejemplo n.º 29
0
 def select_value_from_dropdown(self, selector, value):
     element = self.wait.until(
         EC.presence_of_element_located((selector[0], selector[1])))
     select_obj = Select(element)
     select_obj.select_by_visible_text(value)
Ejemplo n.º 30
0
    def test_site_management(self):

        next_week = date.today() + timedelta(days=7)

        self.wait_for(
            lambda: self.browser.find_element_by_id('site_management_panel'))
        self.create_schedule_item('test itemm 1',
                                  date1=NOW + timedelta(days=3),
                                  quantity=1)
        self.wait_for(
            lambda: self.assertIn('test itemm 1', self.browser.page_source))
        new_item = Scheduled_items.objects.filter(
            description='test itemm 1').first()

        # Marek sees a scheduled item in the needed column and decides to make a purchase order.
        needed = self.wait_for(
            lambda: self.browser.find_element_by_id('needed_panel'))
        self.wait_for(
            lambda: self.browser.find_element_by_id(
                f'needed_item_Scheduled_items_{new_item.pk}')
        )  #because normal items and scheduled items will be here the names will be model_pk
        # He clicks on the purchase order button and finds a modal pops up with a purchase order form
        self.click(f'needed_item_Scheduled_items_{new_item.pk}_PO')
        self.wait_for(lambda: self.browser.find_element_by_id(
            f'purchase_order_modal_Scheduled_items_{new_item.pk}'))

        # Marek sees that the purchase order has an item pre-filled in with the description, job and quantity
        self.wait_for(lambda: self.assertTrue(
            self.browser.find_element_by_id(
                f'PO_form_Scheduled_items_{new_item.pk}').is_displayed()))
        PO_form = self.browser.find_element_by_id(
            f'PO_form_Scheduled_items_{new_item.pk}')
        self.assertIn('200 Park Avenue', PO_form.get_attribute("innerHTML"))

        PO_item_1_form = self.browser.find_element_by_id(
            f'PO_form_Scheduled_items_{new_item.pk}').find_element_by_id(
                'item1')
        self.assertIn('1', PO_item_1_form.get_attribute("innerHTML"))
        self.assertIn('test itemm 1',
                      PO_item_1_form.get_attribute("innerHTML"))
        # Marek fills the rest of the form
        self.slow_type(
            base_element=f'PO_form_Scheduled_items_{new_item.pk}',
            element='item_1_fullname_input',
            string='test item 1 fullname'
        )  # god only knows why this was so buggy but was causing a flickering test when done at full speed

        # select delivery location
        delivery_location_1 = Select(
            self.browser.find_element_by_id(
                f'PO_form_Scheduled_items_{new_item.pk}').find_element_by_id(
                    'item_1_delivery_location_input'))
        delivery_location_1.select_by_value('shop')
        # select delivery date one week from current date
        delivery_date_day = Select(
            self.browser.find_element_by_id(
                f'PO_form_Scheduled_items_{new_item.pk}').find_element_by_id(
                    'id_item_1_delivery_date_day'))
        delivery_date_day.select_by_value(str(next_week.day))

        delivery_date_year = Select(
            self.browser.find_element_by_id(
                f'PO_form_Scheduled_items_{new_item.pk}').find_element_by_id(
                    'id_item_1_delivery_date_year'))
        delivery_date_year.select_by_value(str(next_week.year))

        delivery_date_month = Select(
            self.browser.find_element_by_id(
                f'PO_form_Scheduled_items_{new_item.pk}').find_element_by_id(
                    'id_item_1_delivery_date_month'))
        delivery_date_month.select_by_value(str(next_week.month))

        self.browser.find_element_by_id(
            f'PO_form_Scheduled_items_{new_item.pk}').find_element_by_id(
                'item_1_price_input').send_keys('100')
        self.browser.find_element_by_id(
            f'PO_form_Scheduled_items_{new_item.pk}').find_element_by_id(
                'supplier_input').send_keys('Stark Industries')
        self.browser.find_element_by_id(
            f'PO_form_Scheduled_items_{new_item.pk}').find_element_by_id(
                'supplier_ref_input').send_keys('test item 1 reference')
        # Marek clicks create and is redirected back to the job view
        self.click(base_element=f'PO_form_Scheduled_items_{new_item.pk}',
                   element=f'Scheduled_items_{new_item.pk}_create_PO')
        self.wait_for(lambda: self.assertEqual(
            self.browser.current_url, self.live_server_url + reverse(
                'job', kwargs={'job_id': '200ParkAvenue'})))

        new_ordered_item_model_object = Items.objects.filter(
            fullname='test item 1 fullname').first()
        # Marek sees in the site management panel the item is now in the 'en route' section with the status 'ordered' and showing the expected delivery date
        self.click('en_route_panel_toggle')
        self.wait_for(
            lambda: self.browser.find_element_by_id('en_route_panel'))

        new_en_route_item = self.browser.find_element_by_id(
            'en_route_panel').find_element_by_id(
                f'en_route_item_{new_ordered_item_model_object.pk}')

        self.assertIn('test item 1 fullname',
                      new_en_route_item.get_attribute('innerHTML'))
        self.assertIn('status - ORDERED',
                      new_en_route_item.get_attribute('innerHTML'))
        self.assertIn(
            f'delivery: {new_ordered_item_model_object.delivery_date}',
            new_en_route_item.get_attribute("innerHTML"))

        # Marek sees another scheduled item and makes it a shopping list item
        self.create_schedule_item('schedule item -> shopping list',
                                  quantity=1,
                                  date1=NOW)
        self.wait_for(
            lambda: self.assertIn(' schedule item -&gt; shopping list ', self.
                                  browser.page_source))  # -> == -&gt;
        schedule_item_for_shopping_list_model_object = Scheduled_items.objects.filter(
            description='schedule item -> shopping list').first()
        SI_pk = schedule_item_for_shopping_list_model_object.pk

        # Marek clicks the date button and the modal comes up as before
        self.click(f'schedule_item_{SI_pk}_date')
        self.wait_for(lambda: self.assertTrue(
            self.browser.find_element_by_id(f'date_form_modal_{SI_pk}').
            is_displayed()))

        # Marek clicks the 'shopping list' tab and sees a standard shopping list form pop up in the modal
        self.click(element=f'shopping_list_form_{SI_pk}_toggle')
        self.wait_for(lambda: self.assertTrue(
            self.browser.find_element_by_id(f'date_form_modal_{SI_pk}').
            find_element_by_id(f'shopping_list_form_{SI_pk}').is_displayed()))

        # Marek sees the shopping list form pre-filled with the item description, quantity and job
        shopping_list_form = self.browser.find_element_by_id(
            f'date_form_modal_{SI_pk}').find_element_by_id(
                f'shopping_list_form_{SI_pk}')

        self.assertIn('schedule item -> shopping list',
                      shopping_list_form.get_attribute("innerHTML"))
        self.assertIn('1', shopping_list_form.get_attribute("innerHTML"))
        self.assertIn('200 Park Avenue',
                      shopping_list_form.get_attribute("innerHTML"))

        # Marek sees this is all okay and clicks 'create'
        self.click(base_element=f'date_form_modal_{SI_pk}',
                   element='shopping_list_form_submit_button')
        self.wait_for(lambda: self.assertEquals(
            self.browser.current_url, self.live_server_url + reverse(
                'shopping_list_create', kwargs={'function': 'create'})))
        self.wait_for(lambda: self.assertIn(
            'schedule item -&gt; shopping list', self.browser.page_source))
        new_shopping_list_item = Shopping_list_items.objects.filter(
            description='schedule item -> shopping list').first()
        NSLI_pk = new_shopping_list_item.pk

        # Marek buys the item and clicks 'acquired'
        self.click(base_element=f'Shopping_list_items_{NSLI_pk}',
                   element=f'Shopping_list_items_{NSLI_pk}_acquired_button')
        newly_acquired_item_object = Items.objects.filter(
            description='schedule item -> shopping list').first()

        # Marek delivers the item to site and clicks 'delivered'
        self.browser.get(self.live_server_url +
                         reverse('job', kwargs={'job_id': '200ParkAvenue'}))
        self.wait_for(lambda: self.click('en_route_panel_toggle'))

        self.click(
            base_element=f'en_route_item_{newly_acquired_item_object.pk}',
            element='delivered_button')

        # Marek sees that the item is no longer visible in the 'en-route' panel and is visible in the 'on site' panel
        self.wait_for(lambda: self.click('en_route_panel_toggle'))
        self.wait_for(lambda: self.assertNotIn(
            'id="' + f'en_route_item_{newly_acquired_item_object.pk}"', self.
            browser.page_source))
        # REFRACT - URGENT - item is no longer visible in 'needed' panel
        self.click('on_site_panel_toggle')

        self.wait_for(lambda: self.assertTrue(
            self.browser.find_element_by_id('on_site_panel').is_displayed()))

        self.assertTrue(
            self.browser.find_element_by_id('on_site_panel').
            find_element_by_id(f'on_site_item_{newly_acquired_item_object.pk}'
                               ).is_displayed())

        new_on_site_item = self.browser.find_element_by_id(
            'on_site_panel').find_element_by_id(
                f'on_site_item_{newly_acquired_item_object.pk}')

        self.assertIn('schedule item -&gt; shopping list',
                      new_on_site_item.get_attribute("innerHTML"))
        self.assertIn('1', new_on_site_item.get_attribute("innerHTML"))

        # Marek now needs to fill out a brand new purchase order so clicks on the P.O tab on site management
        self.browser.refresh()
        self.wait_for(
            lambda: self.browser.find_element_by_id('site_management_panel'))
        self.click('PO_panel_toggle')
        self.wait_for(lambda: self.assertTrue(
            self.browser.find_element_by_id('PO_panel').is_displayed()))
        # Marek sees a blank PO
        self.assertTrue(
            self.browser.find_element_by_id('blank_PO_form').is_displayed())
        # Marek fills it with details for one item to be delivered to site one week from now
        form = self.browser.find_element_by_id('blank_PO_form')

        form.find_element_by_id('supplier_input').send_keys('Stark Industries')
        form.find_element_by_id('supplier_ref_input').send_keys('0002')

        form.find_element_by_id('item_1_description_input').send_keys(
            'PO panel test item description')
        form.find_element_by_id('item_1_fullname_input').send_keys(
            'PO panel test item fullname')
        form.find_element_by_id('item_1_price_input').send_keys('250')
        form_job = Select(form.find_element_by_id('item_1_job_input'))
        form_job.select_by_value('200 Park Avenue')
        form_delivery_location = Select(
            form.find_element_by_id('item_1_delivery_location_input'))
        form_delivery_location.select_by_value('site')
        time.sleep(0.2)
        form.find_element_by_id('item_1_quantity_input').send_keys('1')

        delivery_date_day = Select(
            form.find_element_by_id('id_item_1_delivery_date_day'))
        delivery_date_day.select_by_value(str(next_week.day))

        delivery_date_year = Select(
            form.find_element_by_id('id_item_1_delivery_date_year'))
        delivery_date_year.select_by_value(str(next_week.year))

        delivery_date_month = Select(
            form.find_element_by_id('id_item_1_delivery_date_month'))
        delivery_date_month.select_by_value(str(next_week.month))

        # Marek clicks to create the purchase order, the page refreshes
        self.click(base_element='PO_panel',
                   element='PO_panel_PO_form_submit_button')
        self.wait_for(lambda: self.assertTrue(
            self.browser.find_element_by_id('site_management_panel').
            is_displayed()))

        # Marek checks the en-route panel and sees that the 'PO panel test item fullname' is present
        self.click('en_route_panel_toggle')
        self.wait_for(lambda: self.assertTrue(
            self.browser.find_element_by_id('en_route_panel').is_displayed()))

        self.assertIn(
            'PO panel test item fullname',
            self.browser.find_element_by_id('en_route_panel').get_attribute(
                "innerHTML"))