Где разместить% s в WebDriverWait с использованием Python - PullRequest
0 голосов
/ 06 октября 2018

Итак, мой скрипт на python должен войти на веб-сайт и подождать, пока не появится кнопка с размером обуви, который я установил, чтобы он мог щелкнуть по нему, но где мне разместить «% size» с помощью WebdriverWait?Будет ли он идти после всех трех скобок или перед всеми тремя скобками?

size = 9.5
sizeselect = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '//button[@data-qa="size-dropdown" and .="%s"]')))
sizeselect.click()

, например, следующий код будет правильным?

size = 9.5
sizeselect = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '//button[@data-qa="size-dropdown" and .="%s"]'))) % size
sizeselect.click()

или размер% долженбыть после 2-х скобок

size = 9.5
sizeselect = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '//button[@data-qa="size-dropdown" and .="%s"]')) % size)
sizeselect.click()

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Поскольку вам нужно вызвать click() на размере обуви вместо использования expected_conditions в качестве presence_of_element_located, вам нужно использовать element_to_be_clickable следующим образом:

  • Использование абсолютного значения :

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@data-qa="size-dropdown" and contains(.,'9.5')]"))).click()
    
  • Использование переменной :

    size = 9.5
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@data-qa="size-dropdown"][.='" + size + "']"))).click()
    
  • Использование %s:

    size = 9.5
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@data-qa="size-dropdown and contains(text(), '%s')]" % (size)))).click()
    
  • Использование format():

    size = 9.5
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//button[@data-qa="size-dropdown and contains(text(), "{}")]'.format(size))))).click()
    
0 голосов
/ 06 октября 2018

%s - это своего рода заполнитель для точной подстроки, которую вы хотите передать в строку.Вы должны поместить фактическую подстроку сразу после строки:

"foo %s bar" % "baz"  # "foo baz bar"

Так что в вашем случае это должно быть

sizeselect = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '//button[@data-qa="size-dropdown" and .="%s"]' % size)))

Похоже на заполнители строк равно format():

"foo {} bar".format("baz")  # "foo baz bar"

В вашем случае

sizeselect = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '//button[@data-qa="size-dropdown" and .="{}"]'.format(size))))

Вы можете узнать больше о форматировании строки здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...