【问题标题】:Python/Selenium Unknown error with .click().click() 的 Python/Selenium 未知错误
【发布时间】:2019-07-21 19:09:36
【问题描述】:

刚开始使用 selenium 并且有一点问题。当我尝试在元素上使用 .click() 时出现此错误。代码在它上面。这是我的网站。 https://www.minuteinbox.com/ 感谢您的帮助。如果您需要更多信息,请询问。

def get_email():
driver = webdriver.Edge('C:/Users/Aurum/Downloads/MicrosoftWebDriver')
driver.get("https://www.minuteinbox.com/")
assert "MinuteInbox" in driver.title
element_email = driver.find_element_by_id('email')
email = element_email.text
assert "No results found." not in driver.page_source
element_delete = driver.find_element_by_class_name('delete-tab')
assert "No results found." not in driver.page_source
element_delete.click()
driver.close()
return email

错误是:

Traceback (most recent call last): File "C:\Users\Aurum\Documents\Programing\Prog 1\random stuff\FratThing.py", 
line 69, in main() File "C:\Users\Aurum\Documents\Programing\Prog 1\random stuff\FratThing.py", 
line 64, in main email = get_email() File "C:\Users\Aurum\Documents\Programing\Prog 1\random stuff\FratThing.py", 
line 14, in get_email element_delete.click() File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", 
line 80, in click self._execute(Command.CLICK_ELEMENT) File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", 
line 633, in _execute return self._parent.execute(command, params) File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", 
line 321, in execute self.error_handler.check_response(response) File "C:\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 
line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: Unknown error

编辑:所以我发现必须缩小窗口才能使其工作。如果我把它变大并改变类以适应大按钮,它就不起作用了。

Edit2:Github 链接https://github.com/WilPermenter/SignUpBot

【问题讨论】:

  • 您已在缩短日志消息的同时切断了关键的错误跟踪日志。使用错误跟踪日志更新问题。
  • @DebanjanB 这正是弹出的内容。我知道你的意思。

标签: python selenium selenium-webdriver web-scraping


【解决方案1】:

我认为您可以通过以下方式实现相同的效果:

那是css选择器

find_element_by_css_selector(".gradient .delete-tab").click()

这会将匹配的元素限制为一个

在您的代码中:

except:
    element_delete = driver.find_element_by_css_selector('.gradient .delete-tab, .btn-delete')
    element_delete.click()

这应该意味着您可以将其移动到 try 中,因为它已经尝试在两个选择器上进行匹配。

【讨论】:

  • 是的,我以前有过,我正在工作。我昨晚让它工作了,然后今天早上我又回来了,它没有工作。我以为我已经更改了代码中的某些内容,但是我注释掉了除此功能之外的所有内容,但它仍然无法正常工作。程序中的另一个按钮也有同样的问题。当我查看 css 时,它不再显示 .btn-delete。我知道该元素被选中,因为如果我打印它说删除的文本。谢谢,如果你有更多的理想,让他们继续前进。
  • 我从来没有让它与它一起工作。我基本上只是做了我以前做过的事情,只是让窗口的大小变成了它可以工作的大小。我与另一个 btn 有完全相同的问题。如果我无法弄清楚,我可能会在帖子中添加那个。谢谢帮助
  • 如果屏幕大小影响你应该可以使用 or 语法 find_element_by_css_selector(".gradient .delete-tab, .btn-delete ").click()
  • 所以电子邮件地址没问题,要能够创建另一封电子邮件,您需要删除当前的电子邮件。我得到了它们,但即使添加了你的代码,仍然会出现同样的错误。
  • 我将把整个东西放在一个 git hub 中,并将链接放在 OP 中。如果你能看看那可能会有所帮助。我改变了它,但如果你愿意的话,你可以按照你所说的方式来表达,因为我一定做得不对。
【解决方案2】:

基于 Qharr 的回答和您的问题。也许你应该尝试使用 seleniums wait.until()

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

driver = webdriver.Chrome()
driver.get("URLHERE")

wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH,"RELEVANT X PATH"))).click()

也许等待点击下一个按钮,直到驱动程序找到它可能会对您有所帮助。

如果屏幕尺寸正在影响您。您可以在使用driver.get("URL") 加载您的网址后尝试使用driver.set_window_size(480, 320) 当然,您可以将窗口大小设置为适合您的任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 2018-04-29
    • 2022-08-23
    • 2012-08-16
    • 1970-01-01
    相关资源
    最近更新 更多