Java CSS标签?@DesignAndCode你几乎是对的。即使元素不可见,它也可以找到它。问题是,如果它不可见,selenium就不能点击它。对于::,这样做的目的是让您为要查找的元素指定一个特定的标记名。在这种情况下,它将查找id为同一供应商编号且有标签作为

Java CSS标签?@DesignAndCode你几乎是对的。即使元素不可见,它也可以找到它。问题是,如果它不可见,selenium就不能点击它。对于::,这样做的目的是让您为要查找的元素指定一个特定的标记名。在这种情况下,它将查找id为同一供应商编号且有标签作为,java,selenium,selenium-webdriver,cucumber-jvm,Java,Selenium,Selenium Webdriver,Cucumber Jvm,CSS标签?@DesignAndCode你几乎是对的。即使元素不可见,它也可以找到它。问题是,如果它不可见,selenium就不能点击它。对于::,这样做的目的是让您为要查找的元素指定一个特定的标记名。在这种情况下,它将查找id为同一供应商编号且有标签作为父项的任何元素。例如,如果将标签更改为div,它将失败,因为没有id为同一供应商编号且有div作为父项的元素。你也可以用*替换标签,这意味着不管父元素是什么,只要得到它就行了。啊,我明白了。因此,我会将此标记为正确答案。谢谢你RemcoW和@L


CSS标签?@DesignAndCode你几乎是对的。即使元素不可见,它也可以找到它。问题是,如果它不可见,selenium就不能点击它。对于
::
,这样做的目的是让您为要查找的元素指定一个特定的
标记名。在这种情况下,它将查找id为
同一供应商编号
且有
标签
作为父项的任何元素。例如,如果将
标签
更改为
div
,它将失败,因为没有id为
同一供应商编号
且有
div
作为父项的元素。你也可以用
*
替换
标签
,这意味着不管父元素是什么,只要得到它就行了。啊,我明白了。因此,我会将此标记为正确答案。谢谢你RemcoW和@LeonBarkan。你们俩都帮了大忙,谢谢Punkaaj。我已经知道如何通过xpath单击它,但是,我想知道为什么不使用xpath就不能直接访问ID。为什么硒不“可见”@RemcoW回答了这个问题,他的解决方案比Xpath中ID后面有许多子元素要干净得多。对于框架的可维护性来说不是很好。谢谢Punkaaj。我已经知道如何通过xpath单击它,但是,我想知道为什么不使用xpath就不能直接访问ID。为什么硒不“可见”@RemcoW回答了这个问题,他的解决方案比Xpath中ID后面有许多子元素要干净得多。对于框架的可维护性来说不是很好。
<label for="same-supplier-no" ng-class="{checked: !ctrl.energyModel.BillViewModel.SameSupplier}" class="">

  <input type="radio" id="same-supplier-no" name="same-supplier" ng-model="ctrl.energyModel.BillViewModel.SameSupplier" ng-value="false" ng-change="ctrl.sameSupplierValueChanged(); ctrl.analyticsProvider.sendVirtualPageView('SameSupplierNo')" class="ng-pristine ng-untouched ng-valid" value="false">

   <span></span>No

</label>
driver.findElement(By.id("same-supplier-no")).click();
Actions actions = new Actions(driver);
                IWebElement menuHoverLink = driver.findElement(By.XPath("//label[@for='same-supplier-no']"));
                actions.moveToElement(menuHoverLink);
                actions.click();
                actions.perform();

driver.findElement(By.id("same-supplier-no")).click();
driver.findElement(By.xpath("//*[@id='same-supplier-no']/parent::label")).click();
WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath(".//*[@id='same-supplier-question']/div/div/label[2]/span"))));