【发布时间】:2015-08-31 07:08:11
【问题描述】:
我的代码是用 Java 编写的。
我有一组由 javascript 动态生成的单选按钮。 我想点击其中一个。
我使用 xpath,但它不起作用。 它说
线程“主”org.openqa.selenium.NoSuchElementException 中的异常: 无法定位元素:
在谷歌浏览器上“检查元素”之后,我尝试了下面的两种 deliveryType 方法。
//WebElement deliveryType = driver.findElement(By.xpath("//div[contains(@id, 'checkout-shipping-method-load')]//*[contains(@name, 'shipping_method')]"));
//WebElement deliveryType = driver.findElement(By.cssSelector("[name='shipping_method'][id='s_method_matrixrate_matrixrate_5983']"));
//deliveryType.click();
下面是该单选按钮的检查元素。
<div id="checkout-shipping-method-load">
<dl class="sp-methods">
<dt>Select Shipping Method</dt>
<dd>
<ul>
<li>
<input name="shipping_method" type="radio" value="matrixrate_matrixrate_5983" id="s_method_matrixrate_matrixrate_5983" class="radio validation-passed">
<label for="s_method_matrixrate_matrixrate_5983">Standard Shipping<span class="price">NT$300</span></label></li>
<li>
<input name="shipping_method" type="radio" value="matrixrate_matrixrate_5991" id="s_method_matrixrate_matrixrate_5991" class="radio validation-passed">
<label for="s_method_matrixrate_matrixrate_5991">Express Shipping<span class="price">NT$1,200</span></label></li>
</ul>
</dd>
</dl>
</div>
我尝试编写脚本以单击它。 我尝试我的 xpath 遵循“检查元素”和“查看页面源代码”。 两者都给我同样的错误,因为没有找到这样的元素。
如何让我的 selenium 脚本点击由 javascript 动态生成的单选按钮之一?
我的 xpath 应该指向原始的 javascript 编码或窗口加载后由 javascript 生成的 html?
请帮助我。
已关闭:我已使用 隐式等待 来等待我的 javascript 运行并加载我的 html。加载后,我使用 List 来存储我所有的单选按钮。从列表中,我通过索引得到它。
感谢 Girish Sortur 和 JeffC。
下面是我的代码。
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
List<WebElement> methods = driver.findElements(By.cssSelector("input[name='shipping_method']"));
methods.get(0).click();
【问题讨论】:
-
请阅读:stackoverflow.com/help/how-to-ask 并相应地编辑您的答案,如果您不提供一些您尝试过但失败的代码,没有人可以帮助您
-
请务必提供您尝试过但失败的代码。但是,根据我的知识,我提供了一个答案。希望对您有所帮助。
标签: javascript java selenium selenium-webdriver