当前位置: 首页 > 知识库问答 >
问题:

Selenium-Safari facebook使用Java登录错误

任昊阳
2023-03-14

我目前正在学习使用Java的selenium automation,并尝试在MacOS上执行facebook自动登录操作系统Safari 14.0.2

我已经写了这段代码——这段代码在Google Chrome上运行,我已成功登录。

脚本:

WebDriver driver = new SafariDriver();


driver.get("https://facebook.com");

driver.findElement(By.id("email")).sendKeys("email");  //real credentials in selenium

driver.findElement(By.id("pass")).sendKeys("password"); //real credentials in selenium

driver.findElement(By.xpath("//*[@title='Prijať všetky']")).click();  //accept cookies pop-up

driver.findElement(By.name("login")).click();

一切都按预期进行,直到最后一步-单击登录按钮。我在控制台中得到这个错误:

jan 06, 2021 8:18:40 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Exception in thread "main" org.openqa.selenium.WebDriverException:
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'AiruzivelaFilip', ip: 'fe80:0:0:0:107f:1f90:9115:b77a%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '15.0.1'
Driver info: org.openqa.selenium.safari.SafariDriver
Capabilities {acceptInsecureCerts: false, browserName: Safari, browserVersion: 14.0.2, javascriptEnabled: true, platform: MAC, platformName: MAC, safari:automaticInspection: false, safari:automaticProfiling: false, safari:diagnose: false, safari:platformBuildVersion: 20C69, safari:platformVersion: 11.1, safari:useSimulator: false, setWindowRect: true, strictFileInteractability: false, webkit:WebRTC: {DisableICECandidateFiltering: false, DisableInsecureMediaCapture: false}}
Session ID: 01189D0B-44EA-4458-B9C5-FE8050AEC11C
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:285)
at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:84)
at safariTest.main(safariTest.java:17)
    
    

你能告诉我解决方法吗?或者我在哪里能找到问题?非常感谢。

共有1个答案

祁星阑
2023-03-14

谢谢。我实际上已经通过切换步骤解决了这个问题: 1.加载网页2.等待cookie弹出并可单击3.单击接受4.插入凭据5.单击登录。Safari不知何故无法像原始代码工作的chrome一样处理流程。

 类似资料:
  • 我想用selenium登录这个网页。我尝试了selenium的find_element_by_,并使用浏览器中的检查元素。但是我无法登录。我在搜索id、名称、类名,这样我就可以用send_keys传递数据,但是没有做到这些。有人能帮助我提供一些代码来将数据推送到所需的字段吗?谢谢。这就是我到目前为止所做的。 在此之后,我试图点击按钮登录使用 但它失败了。它给出了无法找到“登录”的错误。由于默认情况

  • 问题内容: 我知道这不是一个适当的技术问题,但是在使用selenium制作Facebook发布机器人时,我遇到了问题。到目前为止,这是我的代码 现在,问题是我的代码无法在Fb页面中找到状态框,我对selenium还是很陌生。任何帮助都很好,它是用python编码的。 问题答案: 这是访问的示例代码块 ,通过一组有效的凭据登录,并在以及中使用键入 “ Hie” : 使用XPATH: 使用CSS_SE

  • 问题内容: 我想要做的是打开一个页面(例如youtube)并自动登录,就像我在浏览器中手动打开它一样。 据我了解,我必须使用cookie,问题是我不知道如何使用。 我尝试使用以下方法下载YouTube Cookie: 我得到的是: {'name':'VISITOR_INFO1_LIVE','value':'EDkAwwhbDKQ','path':'/','domain':'.youtube.com

  • 问题内容: 我正在尝试使用Selenium来自动执行ESPN上的某些任务,由于要在访问ESPN页面时重定向到登录页面,因此我首先需要登录到我的帐户。这是登录表单: 这是我的python程序: 当我尝试查找“用户名”元素时,出现了NoSuchElementException。我尝试过在线查找。其他人建议切换框架,但是,登录表单似乎不在另一个框架中。 有任何想法吗? 问题答案: 下面的代码对我来说很好

  • 问题内容: 我的问题实际上与使用Python SeleniumWebdrive登录到yahoo电子邮件帐户的情况相同 但是由于Yahoo更改了登录表单用户界面,因此上述链接中提供的答案对我不起作用。相反,我尝试了以下代码。 当我运行上面的代码时,它总是为我提供密码输入页面。我逐行执行了代码,我认为密码提交后的第二次等待不起作用。 在导航到Yahoo邮箱之前,需要您的建议如何在成功登录后将其更改为重

  • 我正试着从下面的网站刮取一些信息。我是新来的,所以不完全了解正在发生的事情。我基本上是从我在互联网上找到的各种例子中获取信息,我正在使用selenium和python来帮助我导航到页面,从那里我可以刮取一些信息,我使用了下面的脚本,我可以导航到主页,关闭cookies并点击登录。此时,将弹出一个用于输入用户id和密码的弹出窗口div元素未被识别,每次我得到的错误是不存在这样的元素时,我添加了具有预