【问题标题】:Selenium python - can't find the right path to the buttonSelenium python - 找不到按钮的正确路径
【发布时间】:2020-08-19 19:33:23
【问题描述】:

我似乎找不到上面标记的按钮的正确路径。有关如何模拟单击此按钮的任何帮助?

这是网站,下面链接的是大部分源代码。

【问题讨论】:

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

要单击文本为 Lukk 的元素,您需要将WebDriverWait 诱导为element_to_be_clickable(),您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "ytcp-button#close-button div[label='Lukk']"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ytcp-button[@id='close-button']//div[@label='Lukk' and text()='Lukk']"))).click()
    
  • 注意:您必须添加以下导入:

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

【讨论】:

  • 刚试了一下,还是不行。如果它泄露了某些东西,我会收到此错误消息; "//ytcp-button[@id='close-button']//div[@label='Lukk' and text()='Lukk'][@type='submit' and @onclick]"))) .click() 文件“C:\Users\Bruker\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\support\wait.py”,第 80 行,直到引发 TimeoutException(消息,屏幕,堆栈跟踪)selenium.common.exceptions.TimeoutException:消息:
  • @AndersHaarbergEriksen 有一个错误,现在已修复。让我知道状态。
  • 我很想说它有效,但不幸的是它没有。如果它有点帮助;这是youtube的一个页面,就是关闭按钮。
  • 我用更多信息更新了帖子;希望这可以帮助您找到解决方案。
  • 我的意思是发生了同样的错误,并且没有按下任何按钮。
【解决方案2】:

我会说首先等待弹出窗口打开。显式等待可以做到:

这是一个示例代码: https://seleniumbyexamples.github.io/waitvisibility

您的选择器将是 paper-dialog#dialog

一旦弹出窗口可见,您现在就可以等待按钮了。

您可以使用等待可点击:

https://seleniumbyexamples.github.io/waitclickable

id 是关闭按钮

您也可以尝试其他定位器:

https://seleniumbyexamples.github.io/locator

【讨论】:

  • 感谢您的帮助,但不幸的是它没有奏效。出于某种原因,它很难找到我正在寻找的元素,而且我不知道为什么会这样。
  • 您等待的那个元素可能没有加载。如果您正在做无头,那么您可以在访问元素之前截取当前页面的屏幕截图。 driver.save_screenshot("screenshot.png")
猜你喜欢
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
相关资源
最近更新 更多