【问题标题】:How do you select a document from a Google Drive popup selection window in python's selenium package?如何从 python 的 selenium 包中的 Google Drive 弹出选择窗口中选择一个文档?
【发布时间】:2020-11-11 09:29:52
【问题描述】:

我正在从事一个概念验证自动化项目的测试版,在这个阶段,我试图进入一个 Google 驱动器弹出窗口并选择一个特定的文档并提交它。这是弹出窗口的样子。

这是第一部分的 HTML,突出显示:

这是第二部分的 HTML,突出显示:

我尝试了几种不同的 driver.find_element_by_xpath 和 ActionChains(driver).send_keys(Keys....) 方法,但不断出错。请注意,我在右侧的驱动程序窗口中。我确实想通了。任何见解将不胜感激。

更新:例如,当我尝试运行此代码时:

driver.find_element_by_class_name("Od-lh-Jf-O-Ah-Bh").click()

我得到这个错误输出:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".Od-lh-Jf-O-Ah-Bh"}

【问题讨论】:

    标签: python selenium selenium-webdriver xpath webdriver


    【解决方案1】:

    免责声明
    好的。因此,我无法让您的弹出窗口出现或您的代码出现;但是,我确实进入了自己的 Google Drive,并且能够选择一张照片。因此,希望这种技术能够帮助您或指导您找到正确的解决方案。

    基于呈现给我的HTML,我能够创建以下xpath

    //div[@role='main' and not(@style)]//c-wiz[@aria-multiselectable='true']//c-wiz[@data-node-index]//div[@role='row']
    

    说明
    当我查看呈现给我的代码时,我注意到某些页面有一些重复的classes;即 rolestyle 对于初学者。因此,基于此,我注意到如果我的文件夹中有文件,我的 div 将不会有 @style='display: none;'@style 标签,

    打开我的 Google 开发者工具 (F12) 后,我在 xpath 搜索栏中输入://div[@role='main' and not(@style)],得到了 1 of 1。

    之后,我开始查看代码,发现c-wizclass aria-multiselectable,这是唯一的一个。所以,我添加了//c-wiz[@aria-multiselectable='true'],结果仍然是 1 of 1

    然后,我进一步研究了HTML 代码,发现如果我有多张照片,每张照片都位于divclass role 中。基于此,我可以使用xpath在两张照片之间导航

    //div[@role='main' and not(@style)]//c-wiz[@aria-multiselectable='true']//c-wiz[@data-node-index]//div[@role='row']
    

    上面的xpath 得到 2 个中的 1 个。因此,这个 xpath 意味着您可以选择任何照片,或者,我假设,您可以选择文件夹中显示的文档。从那里,一旦您点击照片或文档,使用以下xpath

    driver.find_element(By.XPATH, "//div[@role='main' and not(@style)]//c-wiz[@aria-multiselectable='true']//c-wiz[@data-node-index]//div[@role='row'][1]").click()
    

    您会看到class aria-selected 更改为True。从那里开始,您的Select 按钮理论上应该不再有@disabled 标记。

    图片

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      相关资源
      最近更新 更多