因此,我的python脚本应该登录到一个网站,并等待直到出现我设置的鞋子尺码的按钮,以便可以单击它,但是如何使用WebdriverWait将“%size”放置在哪里?它会在所有3个括号之后还是在所有3个括号之前?
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()
还是%大小必须在第二个括号之后
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()
答案 0 :(得分:0)
%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))))
您可以查看有关字符串格式here的更多信息
答案 1 :(得分:0)
由于您需要以鞋子大小调用click()
,而不是将expected_conditions
用作presence_of_element_located
,因此需要使用 {{1} } 如下:
使用绝对值:
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()