点击“li”表示元素无法点击。对于“是”和“否”选项,单击操作不适用于span或div。请建议一个更好的方法。 用户需要对问题回答“是”或“否”。选项以li元素
显示以下是代码段:
<div class="question">
<span>Did one of our current shoppers refer you to apply?
<span class="asterisk">*</span>
</span>
</div>
<div class="content">
<div class="content-wrapper">
<div class="attachment-wrapper">
<div class="control">
<ul class="keys">
<li class="container step0" style="width: 69px;">
<div class="aux " style="opacity: 1;">
<div class="bg"></div>
<div class="bd"></div>
</div>
<div class="letter"><span>Y</span></div>
<span class="label">Yes</span>
<span class="tick"></span>
</li>
<li class="container step0 selected" style="width: 69px;">
<div class="aux " style="opacity: 1;">
<div class="bg"></div>
<div class="bd"></div>
</div>
<div class="letter"><span>N</span></div>
<span class="label">No</span>
<span class="tick"></span>
</li>
</ul>
</div>
</div>
<div class="clear"></div>
<div class="message "><span></span><div></div></div>
</div>
</div>
已执行的操作:单击span元素中的“否”
WebElement refer =
wait.until(ExpectedConditions.visibilityOfElementLocated
(By.xpath("//li[@id='45182998']/div/div[3]/div/div[1]/div/ul/li[2]/span[1]"
)));
action.moveToElement(refer).click().build().perform();
例外:
org.openqa.selenium.TimeoutException: Timed out after 20 seconds waiting for visibility of element located by By.xpath: //li[@id='45182998']/div/div[3]/div/div[1]/div/ul/li[2]/span[1]
答案 0 :(得分:0)
有几个元素(如下所示)可以响应您的点击,因此您需要手动找出哪一个。
<li class="container
<div class="letter"><span>
<span class="label">
打开Chrome的DevTool,在Element
标签中,检查上面3个元素中的一个元素,选择元素的HTML节点,然后切换到Console
标签并执行{{1单击该元素,如果在单击后选择该选项,则表示您应该单击它而不是其他2个元素。如果未选择选项,请对3个元素的下一个元素重复步骤。
我想应该点击$0.click()
<li class="container
如果您的脚本仍然失败,即使您找到了正确的元素,请尝试在click()之前添加一些sleep(),如果睡眠工作,则意味着您需要等待片刻将选项加载到页面中,从而替换睡眠( )等待()
答案 1 :(得分:0)
根据给定的 HTML 点击是,您必须将 WebDriverWait 与 ExpectedConditions 子句一起归为< em> elementToBeClickable ,您可以使用以下代码块:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='content']//div[@class='control']/ul[@class='keys']/li//span[@class='tick']"))).click();
答案 2 :(得分:0)
尝试将xpath更改为以下并执行点击操作:
//*[starts-with(@class, 'label') and contains(text(), 'No')]
答案 3 :(得分:0)
尝试使用JavascriptExecutor
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
})
这对我有用。