selenium - 无法点击打开菜单的链接
问题描述
我正在尝试单击文本“操作”之后的链接。HTML 是:
<div _ngcontent-c10="" class="col-md-3" style="padding-left: 20px;">
<div _ngcontent-c10="" class="card" style="width:100% !important">
<div _ngcontent-c10="" class="headerText">FLOATS & MOVE</div>
<hr _ngcontent-c10="">
<div _ngcontent-c10="" class="text1">action</div>
<div _ngcontent-c10="" class="text2">
<a _ngcontent-c10="" class="waves-light" data-toggle="modal" mdbwaveseffect="" style="margin-right: -25%;" type="button">
<img _ngcontent-c10="" src="assets/co-assets/icon-down-arrow-med.png">
</a>
</div>
<div _ngcontent-c10=""class="text1">from</div>
<div _ngcontent-c10="" class="text2">
<a _ngcontent-c10="" class="waves-light" data-toggle="modal" mdbwaveseffect=""
style="margin-right: -25%;" type="button">
<img _ngcontent-c10="" src="assets/co-assets/icon-down-arrow-med.png">
</a>
</div>
<div _ngcontent-c10="" class="text1">to</div>
<div _ngcontent-c10="" class="text2">
<a _ngcontent-c10="" class="waves-light" data-toggle="modal" mdbwaveseffect="" style="margin-right: -25%;" type="button">
<img _ngcontent-c10="" src="assets/co-assets/icon-down-arrow-med.png">
</a>
</div>
我使用的 XPath 是:
//div[./text()='action']/following-sibling::div[1]/a
我已经明确等待了 20 秒,条件ElementToBeClickable
如下:
wait.until(ExpectedConditions.elementToBeClickable(actionDropDown));
有趣的是我没有得到TimeOutException
。
解决方案
好像Webdriver无法点击元素。尝试以下选项点击。
使用动作类
WebElement ele=driver.findElement(By.xpath("//div[@class='text1'][contains(.,'action')]/following-sibling::div[1]/a"));
Actions action=new Actions(driver);
action.moveToElement(ele).click().build().perform();
使用 Javascripts 执行器
WebElement ele=driver.findElement(By.xpath("//div[@class='text1'][contains(.,'action')]/following-sibling::div[1]/a"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);
推荐阅读
- c++ - 理解和使用复制赋值构造函数
- outlook - 我可以使用 Microsoft Graph 创建 Outlook 加载项吗?
- c# - 从 MemoryStream 上传图片,而不是直接从硬盘上传
- java - 如何从 Jpos ISO8583 打包文件中读取所有记录,该文件包含一行中的所有记录
- python - 需要读取与运行 jupyter notebook 的路径不同的 csv 文件
- nginx - 将嵌套表存储在 nginx 共享内存中
- android - 在 android 模拟器中启用允许绘制消息
- ios - 使用 SwiftUI 扁平化元组视图
- php - 将单个对象转换为包含该对象的数组
- python - Visual Studio代码中的kv文件问题