我遇到问题,我无法使用id="same-supplier-no"
点击输入类型=“收音机”:
<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>
我在Selenium:
driver.findElement(By.id("same-supplier-no")).click();
它说“元素不可见”。 HTML中有先前的单选按钮,上面有标签,并且标签上有ID(这个没有)。 我只是引用标签ID并点击它而不是它的工作原理。但是这个没有标签的ID,我想避免使用xpath,但是,如果我别无选择,那么我只需通过xpath / css选择。
我也尝试过定位器名称,即By.className(“same-supplier”);并使用For循环和if语句来存储输入类型=无线电元素,仍然不起作用。
问题:为什么我不能点击输入类型=“无线电”,为什么Selenium看不到?是因为它嵌套在Label中吗?如果是这样,有没有人知道如何使用id点击它或者只是到达元素?
谢谢。
注意:我正在使用Java 7 for Selenium。
答案 0 :(得分:2)
在聊天对话中,我可以尝试使用您正在使用的网站上的一些内容。 radio
永远不可见。因此,不可能在其上使用click()
方法。
但是,包含此label
的{{1}}可见。这意味着您可以在此标签上使用radio
。
click()
或者,如果您真的想使用driver.findElement(By.cssSelector("label[for='same-supplier-no']")).click();
找到该元素,可以使用radio
。
xpath
答案 1 :(得分:0)
使用动作点击标签,然后使用:
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();
答案 2 :(得分:0)
点击&#34;找到邮编&#34;按钮,添加以下两行代码 -
WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath(".//*[@id='same-supplier-question']/div/div/label[2]/span"))));
这在我的工作中起作用了...... 您可以将xpath从绝对更改为相对....