-1

我正在尝试使用数据列表自动化表单断言,但是我正在努力何时以及如何使用“WebDriverWait”或驱动程序隐含等待。我的清单是 1000 个字符串。当我运行 100 个样本时,正确捕获不到 100 个。下面的代码捕获 ElementNotSelectableException\StaleElementReferenceException 但没有正确解决它们。

import unittest

from selenium.common.exceptions import ElementNotVisibleException, ElementNotSelectableException, \
    ElementNotInteractableException, StaleElementReferenceException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome()

oar_order_id = '#oar-order-id'
oar_zip_code = '#oar_zip'
#order confirmation list
order_id_list = ["WO-34284975","WO-50002804","WO-50004302","WO-34282964","WO-34214963"]

#zip code confirmation list
zip_code_list = ["23508","99338","62036","75074-7520","37763","98034","89406-4361"]

submit_button = 'body.sales-guest-form.page-layout-1column:nth-child(2) div.page-wrapper:nth-child(10) main.page-main:nth-child(4) div.columns:nth-child(4) div.column.main form.form.form-orders-search:nth-child(4) div.actions-toolbar div.primary > button.action.submit.primary'
# Enter orderid & Zip & click enter

found = []
notfound = []
length = len(order_id_list)
driver.implicitly_wait(10)
wait = WebDriverWait(driver, 15, poll_frequency=1,
                     ignored_exceptions=[ElementNotVisibleException ,ElementNotSelectableException])
driver.get('https:/www.ecklers.com/sales/orderlookup/index/')
# Sample of 10 from list
for i in range(10):
    try:
        wait
        element1 = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, oar_order_id)))
        element1.send_keys(order_id_list[i])

        element2 = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, oar_zip_code)))
        element2.send_keys(zip_code_list[i])

        element3 = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, submit_button)))
        wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, submit_button)))
        element3.click()
        wait
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"body.sales-guest-view.page-layout-1column:nth-child(2) div.page-wrapper:nth-child(10) main.page-main:nth-child(4) div.page-title-wrapper:nth-child(3) h1.page-title > span.base")))
        title = driver.title
        #driver.implicitly_wait(60)

    except(StaleElementReferenceException):
        print("StaleElementReferenceException")

    except(ElementNotInteractableException):
        print("ElementNotInteractableException")

    try:
        text = order_id_list[i]
        assert(title.endswith(text[3:]))
        found.append(text)
    except(AssertionError):
        notfound.append((order_id_list[i]))
    driver.get('https:/www.ecklers.com/sales/orderlookup/index/')
    wait
print(found,notfound)```
4

1 回答 1

-3

我找到了一个对我有帮助的答案。我在 driver.get('https:/www.ecklers.com/sales/orderlookup/index/' 之后使用:time.sleep(.500)

于 2019-11-27T03:42:25.243 回答