【问题标题】:Clicking on button within dropdown menu单击下拉菜单中的按钮
【发布时间】:2020-06-13 01:01:52
【问题描述】:

我正在使用 selenium 自动将某些文本从英语翻译成日语。链接在此处translate at deepl.com 我在点击翻译成下拉菜单中的“翻译成日语”按钮时遇到问题。为了更清楚,我在这里附上照片click here for image。我使用了 xpath,但有时它们可​​以工作,有时它们只是翻译成俄语而不是日语。这个按钮应该怎么定位。非常感谢您的帮助。

【问题讨论】:

标签: python selenium selenium-webdriver xpath selenium-chromedriver


【解决方案1】:

您可以添加以下导入:

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

并在点击按钮之前传递一些预期条件:

driver.get('https://www.deepl.com/translator#en/de/...')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "(//button[@class='lmt__language_select__active'])[2]"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "(//button[@dl-lang='JA'])[2]"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "(//textarea)[2]"))).click()
trad = [el.text for el in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='lmt__textarea_base_style']/span[text()]")))]
print("".join(trad))

替代方案:使用 API (see @Bertrand Martel's answer),或在您的请求 url 中直接将“de”替换为“ja”。

https://www.deepl.com/translator#en/de... 到 https://www.deepl.com/translator#en/ja...

编辑:如果第二次点击失败,您可以使用ActionChains

from selenium.webdriver.common.action_chains import ActionChains
ActionChains(driver).move_to_element(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "(//button[@dl-lang='JA'])[2]")))).click().perform()

【讨论】:

  • 插入您的 sn-p 并引发与以前相同的异常: raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element 在点 (700, 497 )。其他元素会收到点击:
    ...
  • 使用deepl.com/translator#en/ja 手动使用时有效,但在自动浏览器中奇怪的是,语言变为德语而不是日语。
  • 以上代码使用 firefox 浏览器而不是 chrome 浏览器工作。
  • 太棒了。我为第二次点击添加了“ActionChains”的替代方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多