【问题标题】:Click on a dropdown selection with Python Selenium使用 Python Selenium 单击下拉选择
【发布时间】:2021-03-29 19:38:52
【问题描述】:

我正在尝试使用 selenium 更改 website 上的语言。这是我第二次遇到这个下拉菜单的问题,因为他们改变了网站布局,之前的问题here。 当我使用 Selenium 打开时,该网站是英文的。我想把它改成德语。 我可以打开语言选项卡,查看代码,然后尝试使用该对象单击 mat-list-item,但它不起作用。我必须点击哪个按钮来更改语言?

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('/path-to-my-chromedriver/chromedriver')
driver.get('https://swisstaxcalculator.estv.admin.ch/#/taxdata/tax-scales')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div[4]/header/div/div[2]/header-widget')))
print(driver.find_element(By.XPATH, '/html/body/div/div[4]/header/div/div[2]/header-widget').text)
listEle = driver.find_element(By.XPATH, '/html/body/div/div[4]/header/div/div[2]/header-widget')
listEle.click()

然后我尝试点击Deutsch,但这些都不起作用。我已经分别尝试过。

listEle.find_element(By.XPATH, "//h4[text()='Deutsch']").click()
listEle.find_element(By.LINK_TEXT, "Deutsch").click()
listEle.find_element(By.XPATH, '/html/body/div/div[4]/header/div/div[2]/header-widget//div/div/app-language/div/mat-card/mat-list/mat-list-item[1]/div/div[2]/h4').click()
listEle.find_element(By.XPATH, '//*[@id="language"]/mat-card/mat-list/mat-list-item[1]').click()
listEle.find_element(By.XPATH, '/html/body/div/div[4]/header/div/div[2]/header-widget//div/div/app-language/div/mat-card/mat-list/mat-list-item[1]/div/div[1]').click()

我也尝试过使用driver 而不是listEle,结果相同。

【问题讨论】:

    标签: html python-3.x selenium-webdriver


    【解决方案1】:

    如果我认为列表中语言的顺序没有改变,您可以模拟按 ENTER 键来选择应该在列表第一位的 Deutsch。

    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
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome()
    driver.get('https://swisstaxcalculator.estv.admin.ch/#/taxdata/tax-scales')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div[4]/header/div/div[2]/header-widget')))
    print(driver.find_element(By.XPATH, '/html/body/div/div[4]/header/div/div[2]/header-widget').text)
    listEle = driver.find_element(By.XPATH, '/html/body/div/div[4]/header/div/div[2]/header-widget')
    listEle.click()
    listEle.send_keys(Keys.ENTER)
    

    【讨论】:

    • 感谢您的回答。我已经尝试过多次,类似于我的其他解决方案之一,硒点击“登录”按钮。
    【解决方案2】:

    我现在做了一个解决方法,我将 Mac 的设置更改为“Deutsch”。现在一切都从一开始就在“Deutsch”中。所以我根本不需要改变语言。

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 2019-08-27
      • 2023-03-25
      • 2022-11-11
      • 2023-04-01
      • 1970-01-01
      • 2022-07-08
      • 2018-02-17
      • 1970-01-01
      相关资源
      最近更新 更多