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

如何让Selenium更新Facebook个人资料图片

文建业
2023-03-14

我正在尝试让Selenium webdriver(控制Firefox)更新其登录的Facebook帐户的个人资料图片。我使用了一个典型的建议,即查找文件输入并发送文件路径的密钥,下面是我得到的:

image.find_element_by_xpath("//input[contains(@title,'Choose a file to upload')]").send_keys(os.getcwd()+'test.png')

无论如何,我得到的错误是:

回溯(最后一次调用):文件“C:/Users/maste/PycharmProjects/accountGenerator/accountGenerator.py”,第136行,in

那个

共有2个答案

养鸿运
2023-03-14

当找到元素时,会发生异常ElementNotInteractiableException,但您无法对其执行任何操作。例如,您可以单击或调用发送键,但操作最终会失败。

出现这种情况的原因可能有以下多种:

  • 元素不可见/未完全显示
  • 元素已离开屏幕
  • 隐藏在其他元素后面或隐藏自己的元素
  • 您需要执行一些操作才能启用它。

在这种情况下,您可以尝试以下方法:-

1、等待元素变为可见或可单击

WebDriverWait letsWait = new WebDriverWait(driver, timeout);
letsWait.until(ExpectedConditions.visibilityOf(item)); 
letsWait.until(ExpectedConditions.elementToBeClickable(item));

2、滚动直到元素出现在显示屏下方

Actions act = new Actions(driver);
act.moveToElement(item);

3、使用JavaScript处理DOM元素

JavascriptExecutor jScript = (JavascriptExecutor) driver;
jScript.executeScript("var item = document.querySelector('locator'); item.value = 'your choice';")

但是,您也可以阅读这个GitHub线程,因为其他几个人在各自的场景中也面临这个问题:https://github.com/SeleniumHQ/selenium/issues/5037

顺便说一句,这里有一个帖子来解释如何使用Selenium处理文件上传,您可以检查不同的方法或尝试Java而不是Python。

赵晟睿
2023-03-14

您可以使用Autoit及其编辑器来执行此类文件上载操作,您所要做的只是找到您必须上载文件的元素按钮,在运行Autoit file所需的按钮操作上,它只需从按钮中运行click命令,然后选择您描述的文件并上载即可。

我有下面的分享链接,你可以很容易地理解

https://www.softwaretestingmaterial.com/upload-file-using-autoit/

 类似资料:
  • 这是我用来在代码中检索图片的代码。发送图形请求后,我立即调用此函数。 让upLoadData=尝试数据(内容:URL(fileURLWithPath:“https:/graph.facebook.com/(fbUID)/picture?type=large)))让upLoadImage=UIImage(数据:upLoadData)?。jpeg(低) 然而,这是我得到的错误 错误Domain=nsc

  • 个人资料        展示、管理个人的基本资料 点击编辑按钮,进入编辑模式,输入新的用户信息,点击保存,完成资料修改。

  • 我正在使用脸书API V2.0 JavaScript SDK创建一个网站,我想显示用户的朋友的个人资料图片。我已经设法使用graph API显示了我的个人资料图片,但是如果我登录了我的应用程序(我是管理员),我无法获得我所有朋友的ID。如果我有身份证,我就能展示他们的照片。 在图形资源管理器中,我检查了所有权限(用户数据权限扩展权限)。我注意到,如果我切换到API V1.0,我会获得朋友权限,这正

  • 问题内容: 我想获取我朋友列表中的所有生日。我已经尝试了好几天。我的代码如下。 每次我使用此代码都会产生错误。令牌都显示为空,响应都显示为问题“必须使用活动访问令牌来查询有关当前用户的信息” 问题答案: 创建一个方法: 在方法主体中,您必须编写: } 上面的函数将从facebook获取json数据。您需要解析json以获得单独的配置文件数据。 来自Facebook的样本配置文件json将如下所示:

  • 问题内容: 在将其他字段(例如位置,性别,雇主等)添加到用户个人资料时,是否应该在其中添加其他列并将其保存在其中?还是应该创建一个新表来保存用户个人资料信息? 另外,当用户上传个人资料图片时,是否应该将其保存在同一张表中?(请注意,这不是生产服务器,我只是在本地运行服务器上执行此操作以弄清楚问题)。谢谢 问题答案: 你必须为用户个人资料建立模型: 然后在中配置

  • 假设你已经通过开放图协议的meta标签为你的网页设置了facebook图像,如下所示: