public void clickButtonText(String text, String xpath){ if (xpath == "") { common.actionStart("单击按钮文字:'" + text + "'"); WebElement html = driver.waitByXpath("/html"); xpath = common.getDiv() + common.getCtl()+ "//button[starts-with(.,'" + text + "') or (contains(.,'" + text + "'))]"; List<WebElement> divList = html.findElements(By.xpath(xpath)); if(divList.size()!=1){ for(int i = 1; i <= divList.size(); i++){ xpath = "(" + common.getDiv() + common.getCtl()+ "//button[starts-with(.,'" + text + "') or (contains(.,'" + text + "'))])[" + i +"]"; try { System.out.println("尝试点击: " + xpath); common.getDriver().click(xpath); break; } catch (Exception e) { continue; } } } else { common.getDriver().click(xpath); } } else { common.actionStart("单击xpath:"+xpath); common.getDriver().click(xpath); common.actionEnd(); } System.out.println("点击成功: " + xpath); common.actionEnd(); }
时间: 2024-04-21 13:24:21 浏览: 106
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
这是一个名为`clickButtonText`的方法,它接受两个参数:`text`和`xpath`。
该方法的目的是根据按钮的文字或XPath来点击按钮。
具体步骤如下:
1. 如果传入的`xpath`为空字符串,则根据按钮的文字进行定位。
2. 使用`common.actionStart()`方法开始操作,并通过`driver.waitByXpath()`方法获取页面的`/html`元素。
3. 构建XPath表达式,使用`common.getDiv()`和`common.getCtl()`方法获取一些前缀,并使用按钮的文字进行匹配。XPath表达式会查找所有文本以`text`开头或包含`text`的按钮元素。
4. 使用`html.findElements(By.xpath(xpath))`方法找到匹配的按钮元素列表。
5. 如果找到的按钮元素数量不为1,则遍历列表中的每个元素:
- 重新构建XPath表达式,以便选择第`i`个按钮。
- 尝试点击该按钮,如果点击成功则跳出循环。
- 如果点击失败,则继续下一次循环。
6. 如果找到的按钮元素数量为1,则直接点击该按钮。
7. 如果传入的`xpath`不为空字符串,则直接根据传入的`xpath`进行定位,并点击对应的元素。
8. 使用`common.actionEnd()`方法结束操作。
9. 打印出成功点击的`xpath`。
10. 使用`common.actionEnd()`方法结束操作。
请注意,以上代码只是一个方法的部分实现,无法全面判断其功能是否完整和正确。如果需要更多信息,请提供更多上下文或完整的代码。
阅读全文