【问题标题】:Selenium Node JS, can't click on specific element with xpathSelenium Node JS,无法使用xpath点击特定元素
【发布时间】:2021-06-08 13:44:27
【问题描述】:

我正在尝试制作一个免费的开源脚本来买鞋,就在这个页面:https://www.zalando.es/nike-sportswear-nike-waffle-one-zapatillas-summit-whitewhite-black-orange-ni112o0jj-a11.html

我可以像往常一样使用驱动模块获取元素并单击它们

driver.findElement(By.id('uc-btn-accept-banner')).click();

当我尝试选择脚尺寸时发生错误,首先打开尺寸选择器

driver.findElement(By.id('picker-trigger')).click();  //THIS ONE WORKS.
driver.findElement(By.xpath('/html/body/div[7]/div/div[3]/div/form/div/div[1]/div/label/span')).click();   // THIS ONE DOESN'T.

我尝试通过 xpath 在网站上单击一些元素,并且所有元素都可以正常工作,但脚的大小。 有人可以帮我挑选脚的尺寸吗?我不介意它是否使用其他方法。

【问题讨论】:

    标签: javascript selenium driver


    【解决方案1】:

    您在这里使用了错误的选择器。
    打开下拉菜单后,您可以通过定位器选择任何尺寸,如下所示:

    //input[@name="size-picker"]/..//span[text()="39"]
    

    会是这样的:

    driver.findElement(By.id('picker-trigger')).click();
    driver.findElement(By.xpath('//input[@name="size-picker"]/..//span[text()="39"]')).click();
    

    只需在 XPath 表达式中更新所需大小的值

    【讨论】:

      【解决方案2】:

      它是一个下拉列表:(但我们不能使用 Selenium 中的 Select 类,因为下拉列表不是使用 Select 选项标签构建的)

      使用此 xpath 单击下拉菜单:

      //span[text()='Elige una talla']/..
      

      然后像这样点击:

      driver.findElement(By.xpath("//span[text()='Elige una talla']/..")).click();  
      

      现在你会看到一个脚尺寸列表:

      使用下面的 xpath 选择它们:

      //form[@name='size-picker-form']/descendant::label[contains(@for, 'size-picker')][3]
      

      这将从显示的列表中选择第三个项目。如果您想选择不同的尺寸,您必须将 [3] 更改为其他数字。

      driver.findElement(By.xpath("//form[@name='size-picker-form']/descendant::label[contains(@for, 'size-picker')][3]")).click(); 
      

      这应该选择40 大小

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-19
        • 1970-01-01
        • 2022-11-16
        • 1970-01-01
        • 2019-08-10
        相关资源
        最近更新 更多