Chrome XPATH -在每个循环中引用列表中的字符串

7y4bm7vi  于 2023-04-27  发布在  Go
关注(0)|答案(2)|浏览(97)

使用Selenium和XPATH来点击多个网页,我想迭代一个字符串列表--每次迭代都点击不同的网页。
名单是:

y=['Toowoomba','Ascot']

点击第一个网页的代码是:

for j in y:
    button2 = driver.find_element(by=By.XPATH, value="(//span[contains(text(),'Toowoomba')])[2]")
    button2.click()

我如何迭代这个循环,使下一个网页是阿斯科特?
我的尝试是:

for j in y:
    button2 = driver.find_element(by=By.XPATH, value="(//span[contains(text(),j)])[2]")
    button2.click()
relj7zay

relj7zay1#

F弦将是一个很好的应用。

for j in y:
    button2 = driver.find_element(by=By.XPATH, value=f"(//span[contains(text(),'{j}')])[2]")
    button2.click()

但你不必使用f弦;任何文本格式方案都可以工作,例如良好的旧字符串连接:

button2 = driver.find_element(by=By.XPATH, value="(//span[contains(text(),'" + j + "')])[2]")
xqnpmsa8

xqnpmsa82#

你可以这样做:

for btn_name in y:
    xpath_of_btn = "(//span[contains(text(),'" + btn_name + "')])[2]"
    button = driver.find_element(by=By.XPATH, value=xpath_of_btn)
    button.click()

这是一个更好的完整代码:

from selenium.webdriver.common.by import By

# your list
y = ['Toowoomba', 'Ascot']

# your loop
for btn_name in y:
    xpath_of_btn = "(//span[contains(text(),'%s')])[2]" % btn_name
    button = driver.find_element(by=By.XPATH, value=xpath_of_btn)
    # test if the button exists before click on it
    if button:
        button.click()

相关问题