【问题标题】:How to select a different language on a website with selenium如何使用 selenium 在网站上选择不同的语言
【发布时间】:2023-03-30 16:55:01
【问题描述】:

这是一个提供税务信息的开放网站。我访问该站点,单击“Abzüge”,然后下一页是英文的。我尝试更改为德语,但是找不到按钮。我当前的代码是

from selenium import webdriver
driver = webdriver.Chrome('/path-to-my-chromedriver/chromedriver')
driver.get('https://www.estv.admin.ch/estv/de/home/allgemein/steuerstatistiken/fachinformationen/steuerbelastungen/steuerfuesse.html')
elem1 = driver.find_element_by_link_text('Abzüge')
elem1.click()
de = driver.find_element_by_xpath('/html/body/div/div[4]/header/div/div[2]/div/button[1]')
de.click()
driver.close()

错误是NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/div[4]/header/div/div[2]/div/button[1]"} (Session info: chrome=85.0.4183.102)

我也尝试按类和较短的 xPath 来查找按钮,但我永远找不到按钮。

我还需要在主字段中选择一些按钮。所以我也试了一下,但效果不佳。我选择整个瑞士的代码,而不是改成德语,是

element = driver.find_element_by_xpath('//*[@id="LOCATION"]/div[2]/div[1]/div[1]/div/div/div[2]')
element.click()

我遇到同样的错误,NoSuchElementException

如何更改网页上的语言,以及如何选择正文中的按钮?

【问题讨论】:

  • 试试这个 XPath //nav[@class='nav-lang']//li[contains(., 'DE')] 来定位语言元素。(右上角)。
  • 这没有得到异常。你能详细说明你的解决方案吗?但是,它并没有改变语言(至少在 selenium 打开的浏览器上看不到)。
  • 这是获取语言代码为 DE 的元素的 XPath。如果您能够识别元素,请将DE 更改为IT(因为DE 是默认语言),然后单击该元素。

标签: html python-3.x selenium


【解决方案1】:

您可以将以下代码与 cmets 中讨论的 XPath 定位器一起使用。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()

driver.get('https://www.estv.admin.ch/estv/de/home/allgemein/steuerstatistiken/fachinformationen/steuerbelastungen/steuerfuesse.html')

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH, "//nav[@class='nav-lang']//li[contains(., 'IT')]")))

print(driver.find_element(By.XPATH, "//nav[@class='nav-lang']//li[contains(., 'IT')]").text)
driver.find_element(By.XPATH, "//nav[@class='nav-lang']//li[contains(., 'IT')]").click()

【讨论】:

  • 如果我在我想更改语言的实际站点上执行此操作,https://swisstaxcalculator.estv.admin.ch/#/taxdata/deductions,那么它不起作用
  • 我在实际网页上进行了尝试,我想更改语言并使用/html/body/div/div[4]/header/div/div[2]/div/button[1]' 作为 DE 工作的 XPATH。然后选择“Gesamte Schweiz”相应地工作driver.find_element(By.XPATH, '//*[@id="LOCATION"]/div[2]/div[1]/div[1]/div/div/div[2]').click()。干杯
  • 在这个页面上它是一个按钮,你可以使用 XPath 作为//button[@title='German']
  • 但我建议使用动态 XPath。 XPath [@id="LOCATION"]/div[2]/div[1]/div[1]/div/div/div[2]').click() 将来可能会发生变化,如果有人在两者之间添加任何标签。
  • 这也有效。干杯。我之前尝试过这个 XPath,但是没有 WebDriverWait 方法,它不起作用。所以需要先等待元素加载完毕。
猜你喜欢
  • 2012-01-03
  • 2020-03-30
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多