如何使用Selenium Webdriver和Python单击语言/区域链接?

时间:2016-06-06 13:42:19

标签: python selenium

我试图点击“北美”'和'美国',在以下网址: http://www.nike.com/language_tunnel

以下是我已经工作了几周的步骤,但现在似乎无法正常工作。

# choose country/region
driver.find_element_by_xpath("(//button[@type='button'])[2]").click()
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "li.US a"))).click()

第一个命令现在似乎打开了南美洲,然后它停滞不前,因为它正在寻找美国,但在南美洲没有美国联系。 我相信我需要更改xPath,但我不确定什么是正确的xpath(并且更愿意不使用xpath)。

3 个答案:

答案 0 :(得分:2)

如您所见,在这种情况下按索引定位元素并不十分可靠。元素顺序之类的东西往往会经常变化。相反,请使用data-region属性,例如:

driver.find_element_by_css_selector("button[data-region=n-america]").click()

答案 1 :(得分:0)

尝试使用以下代码:

driver.find_element_by_xpath('//button[@data-region="n-america"]').click()
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "li  a[data-country="US"]"))).click()

答案 2 :(得分:0)

如果您可能希望明天更改国家/地区名称,则可以使用以下代码段:

countryToSearch = "North America"  // you can change this accordingly, rest should work fine
for countries in driver.find_elements_by_xpath("(//button[@type='button'])"):
    countryName = countries.text
    if countryName == countryToSearch:
        countries.click()
        break