【问题标题】:Manipulate xpath using variables使用变量操作 xpath
【发布时间】:2019-07-20 18:36:43
【问题描述】:

所以我有代码,其中用户输入一个颜色变量,它的字符串称为颜色。示例链接 - https://www.supremenewyork.com/shop/jackets/k56l3oteu/hjylineo1。所以接下来我尝试使用

在网站上找到它
driver.find_element_by_xpath("//a[@data-style-name='{}'".format(color.get()))

语法错误,我不确定如何使用用户之前输入的变量正确找到它。还有一个问题,当找到其中一种颜色时,如何选择该颜色作为结帐选项,不确定我是否解释正确。感谢您提供任何信息

【问题讨论】:

    标签: python selenium xpath web-scraping selenium-chromedriver


    【解决方案1】:

    尝试使用以下 CSS 选择器来识别元素:

    'p.style.protect'
    

    看起来这将唯一标识显示所选颜色的元素。

    然后你的颜色存储在元素的内部 HTML 中,所以你可以用类似的东西来获取它

    chosenColor = 
    driver.find_element_by_css_selector('p.style.protect').text()
    

    好的,我现在知道您想使用 xPath 根据颜色动态选择元素。我注意到 xPath

    '//*[@id="details"]/ul/li[4]/a[1]'
    

    找到右上角的元素,

    '//*[@id="details"]/ul/li[4]/a[2]'
    

    找到右中元素等等...

    因此,如果您可以简单地使用地图将颜色映射到数字,例如

    colorMap = {
        "brown" : 1,
        "cyan" : 2,
        "grey" : 3,
        ...
    }
    

    (不确定我的示例中颜色是否正确匹配,但希望您能理解)

    那么,

    driver.find_element_by_xpath('//*[@id="details"]/ul/li[4]/a[' + 
    'colorMap.("<whatever color you are looking to select>")' + ]').click()
    

    应该选择你指定颜色的元素。

    这有帮助吗?如果您有任何问题,请告诉我。

    【讨论】:

    • 哎呀。没有太多意义。我是计算机科学学位的大一新生,只是想制作自己的小项目。用户定义的颜色作为文本输入到 Tkinter EntryBox 中。然后我得到()它,只需要一种简单的方法将该文本输入到 xpath 中,就像我展示的那样。所以基本上根据用户来改变xpath。我还能怎么做以及找到路径时如何单击()或选择它。感谢和抱歉这么多东西)
    【解决方案2】:

    您可以使用下面的字符串格式,但您的 xpath 中有错误 - 最后缺少 ]

    driver.find_element_by_xpath("//a[@data-style-name='{}']".format(color.get()))
    driver.find_element_by_xpath("//a[@data-style-name='{0}']".format(color.get()))
    driver.find_element_by_xpath("//a[@data-style-name='%s']" % color.get())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多