如何使用Python Selenium操作Google Form下拉菜单


总览

当我选择Google Form的下拉菜单时,无法执行此操作,因为无法正常操作。即使我尝试通过参考此内容进行响应,它也无法正常工作,当我对日语版本的stackOverFlow提出问题时,我收到了注释并解决了问题,因此我对过程进行了总结。
与python一起使用时就是这种情况。也许其他语言也可以做到这一点。
来源在这里。
它是在以前的帖子中使用的基类中实现的。

正常下拉操作方法

基类中,以下方法用于操作常规下拉。
webElement设置目标X-Path,用inputValue的显示名称设置下拉选择值。
它还包括屏幕绘图待机处理,异常处理等,但不包括

  • 根据下拉X-Path获取下拉元素
  • 将检索到的元素传递到Select

  • 在显示的文本中选择下拉菜单。
  • 流量为

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        # プルダウンを選択する 要素が表示されるまで20秒待つ さらに待ち時間が必要な場合は指定を行う
        def selectPullDownWaitDisplay(self,webElement,inputValue,waitTime=0):
            try:
                time.sleep(waitTime)
                self.wait.until(expected_conditions.element_to_be_clickable((By.XPATH,webElement)))
                selectList=self.driver.find_element_by_xpath(webElement)
                selectForm=Select(selectList)
                # 画面に表示されるプルダウンのテキストで選択を行う
                selectForm.select_by_visible_text(inputValue)
            except SystemError as err:
                self.log.error('テキスト送信失敗:'+webElement)
                self.log.error('例外発生 {}'.format(err))
                self.getScreenShot()
                raise
            except:
                self.outputException(webElement)
                raise

    如果您使用按F12开头的开发工具进行检查,则
    通常プルダウン.PNG
    您可以看到它是一个这样的选择标记。

    如何操作Google Form下拉菜单

    正常下拉菜单选择Select元素,但Google Form下拉菜单不是Select元素,因此,如果以通常的方式选择它,则不是Select元素。
    这次,通过以下方法操作下拉菜单。
    buttonInfo在目标下拉菜单的右侧设置的X路径,target通过显示名称设置下拉选择值,pullDownPosition设置Google表单开始处的下拉位置从0开始。
    它还包括屏幕绘图待机处理,异常处理等,但不包括

  • 单击使用 X-Path

  • 等待下拉内容显示后,按exportSelectPopup获取下拉内容。

    • 此时,由于通过find_elements_by_class_name获取,因此可以通过屏幕上的下拉次数获取所选内容。内容仅是单击位置上的内容。
  • pullDownPosition判断单击位置,并从有内容的地方获取content的标记。
  • 选择一个与获取的标签的内容与您要选择的内容相匹配的标签。如果它们不匹配,则什么也不做,继续进行下一个过程。
  • 流量为

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
        # GoogleFormの場合プルダウンが通常の方法では選択できないので
        def selectPullDownGoogleForm(self,buttonInfo,target,pullDownPosition):
            try:
                self.webElementClickOverlay(buttonInfo)
                time.sleep(3)
                options=self.driver.find_elements_by_class_name("exportSelectPopup")
                contents = options[pullDownPosition].find_elements_by_tag_name('content')
                [i.click() for i in contents if i.text == target]
            except SystemError as err:
                self.log.error('要素待機失敗:'+buttonInfo)
                self.log.error('例外発生 {0}'.format(err))
                self.getScreenShot()
                raise
            except:
                self.outputException(buttonInfo)
                raise

    使用开发人员工具检查
    googleform.PNG
    您可以看到它被div标签包围,像这样。

    用法等

    我想知道,如果将它用于麻烦的地方(例如???),例如每次在Google Form上进行定期报告时,都会更方便吗?