【问题标题】:How to select value?如何选择价值?
【发布时间】:2021-04-22 17:32:23
【问题描述】:

我想在 ring_size 列表中选择(单击)戒指尺寸的尺寸。有两个循环第一个从 ring_size 中选择值,另一个选择单独的值。

我想在第二个循环中选择或单击适当的尺寸。附上元素的图片。

我需要的输出是当我运行代码时选择/单击/选择大小 4、5、6 和另一个循环 6.25、6.5、7.5 等等..

附上图片。

enter image description here

代码

ring_sizes = ['4, 5, 6','6.25, 6.5, 7.5','9, 10, 11','8.25, 8.75, 3.5']

for i in ring_sizes:
    size_string = i
    size_list = size_string.split(', ')    

    for size in size_list:
        options = driver.find_element_by_tag_name(size)
        
    driver.switch_to.default_content()
    time.sleep(3)
    driver.get('www.example.com')

driver.quit()

【问题讨论】:

  • 页面截图很有帮助,但 HTML 截图没有用。请复制相关的 HTML 并将其发布在您的问题中,格式正确。

标签: python selenium selenium-webdriver


【解决方案1】:
for size in size_list:
    driver.find_element_by_xpath("//div[@class='msku-variation-values-3']/ul/li[.={}]".format(size))).click()

可能想先修复你的数组,它有 ' 和 ,但要单击与该值相关的选项,请单击带有该文本的 li。

【讨论】:

  • 这就是我会做的方式(清理原始列表并摆脱单引号等......)问题是OP想要循环遍历这些集合4,5,6然后是6.25,6.5,7.5 等的另一个循环,一次不是一个大小。我自己不明白这个要求,你的解决方案似乎更简单。
  • 将其更改为修复程序。
【解决方案2】:

您还没有解释为什么需要在嵌套循环中执行此操作,因此很难知道如何处理。从表面上看,您的代码并未证明需要在单独的循环中执行此操作。

与其将它们存储为字符串数组然后拆分字符串,不如只做嵌套数组更容易。我已将您的变量重命名为与它们所持有的更相关的东西。下面的代码将在内部循环内按顺序单击它们,但由于我们不知道您是否/您想在循环之间做什么,所以我留下了一个注释占位符。您还切换到默认内容,但您从未切换到默认内容以外的其他内容,因此我将其删除。我还删除了睡眠和导航到 URL,因为它们似乎没有做任何与您的场景相关的事情。

ring_groups = [[4, 5, 6],[6.25, 6.5, 7.5],[9, 10, 11],[8.25, 8.75, 3.5]]
for ring_group in ring_groups:
    for ring_size in ring_group:
        driver.find_element_by_xpath("//div[@id='msku-variation-values-3']//li[text()='" + str(ring_size) + "']").click()
    # do something else?
driver.quit()

【讨论】:

    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2018-02-03
    • 1970-01-01
    • 2021-09-10
    • 2020-06-02
    • 1970-01-01
    相关资源
    最近更新 更多