【问题标题】:With Python Selenium, how to select an item from a single select drop-down menu, when there are multiple?使用Python Selenium,当有多个时,如何从单个选择下拉菜单中选择一个项目?
【发布时间】:2020-09-01 19:26:21
【问题描述】:

我在网页上有一个[添加字段]按钮,当按下时,它将显示一个选择列表(下拉菜单)。

这个单选下拉列表的xpath是:'//*[@id="adv_options[3][]'

第二个数组项为空 l 比如'[]'

我的代码可以在第一个“添加字段”上选择正确的项目,但是如果我再次单击“添加字段”,它会显示另一个单选下拉菜单(与options),第二个的xpath是一样的:'//*[@id="adv_options[3][]'

所以现在如果我尝试使用该 xpath 从该菜单中进行选择,它将选择第一个,而不是第二个。

该网站可能编码不佳,我如何从第二、第三或第四个单选下拉菜单选项中选择正确的项目?


更新:

从第一个下拉列表中选择第一个项目的方法如下:

element = self.driver.find_element(By.XPATH, '//*starts-with(@id, 'adv_options[3][]')
select=Select(element)
select.select_by_value('1506')

现在有第二个具有相同 id (adv_options[3][]) 的下拉列表,我无法通过 xpath 找到并从中选择项目。


如果有人遇到过这个问题并找到了可行的代码,请分享。

【问题讨论】:

    标签: python html forms selenium xpath


    【解决方案1】:

    我希望您可以使用另一个 XPath 来唯一地确定两个下拉框。

    XPath 是在页面上查找元素的路径。目前它只是找到任何具有 id adv_options 的节点,我猜这两个下拉框都有。如果您希望某人找到另一个 XPath 来唯一确定第二个框,则必须提供一些包含这两个框的 HTML。

    但是,在 selenium 中,您可以执行以下操作:

    drop-down = driver.find_elements_by_xpath('//*[@id="adv_options[3][]')
    #Returns an array of elements with this xpath
    #E.g 
    drop_down[0] #will be the first element with that path presumably the drop down box.
    drop_down[1] #should be the second element with that path
    

    【讨论】:

      猜你喜欢
      • 2021-12-08
      • 1970-01-01
      • 2022-01-23
      • 2020-09-17
      • 2020-05-14
      • 2019-02-04
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      相关资源
      最近更新 更多