当前位置: 首页 > 知识库问答 >
问题:

如何定位列表中定义的按钮?

山翼
2023-03-14

我正在写一个自动网页的硒脚本。我需要点击列表中定义的按钮。

这是我的网页用户界面的图像-新帐户是我指的按钮

这是我的XML代码:

<div id="00B4E000000LQ2C_topNav" class="topNav primaryPalette">
  <div id="00B4E000000LQ2C_subNav" class="subNav">
    <div class="linkBar brandSecondaryBrd">
      <div id="00B4E000000LQ2C_listButtons" class="listButtons">
        <ul class="piped">
          <li>
            <input class="btn" type="button" title="New Account"       onclick="navigateToUrl('/setup/ui/recordtypeselect.jsp?ent=Account&ekp=001&retURL=%2F001%3Ffcf%3D00B4E000000LQ2C%26isdtp%3Dnv%26nonce%3Df8007ad94993912b7ff4149193a6096ccfed4ebb1454e0b9b310ad14b61de71d%26sfdcIFrameOrigin%3Dhttps%253A%252F%252Fcs83.salesforce.com&save_new_url=%2F001%2Fe%3FretURL%3D%252F001%253Ffcf%253D00B4E000000LQ2C%2526isdtp%253Dnv%2526nonce%253Df8007ad94993912b7ff4149193a6096ccfed4ebb1454e0b9b310ad14b61de71d%2526sfdcIFrameOrigin%253Dhttps%25253A%25252F%25252Fcs83.salesforce.com&isdtp=vw','LIST_VIEW','new');" name="new" value="New Account"/>
          </li>
          <li class="lastItem">
        </ul>

我用了:

driver.findElement(By.xpath(".//*[@id='00B4E000000LQ2C_listButtons']/ul/li[1]/input")).click();

(XPath是由Firebug给出的)但它给了我一个错误,说明

无法定位元素

请帮我脚本/定位这个按钮。

共有2个答案

晋安国
2023-03-14

嗨,请尝试下面的方式

// first way 
driver.findElement(By.xpath("//*[@name='new']")).click();
// second way 
driver.findElement(By.xpath("//*[@class='btn']")).click();
// basically you can use various attributes of input tag with button inside the xpath to click

更新工作与i框架

// A short way to identify how many iframe's are present on a web page

List<WebElement> numberOfFrames= driver.findElements(By.tagName("iframe"));
System.out.println("Total Number of iframes present are : " +numberOfFrames.size());
for(int i=0;i<numberOfFrames.size();i++){
    // here u can identify iframes with any of its attribute vale say name,title or which is most suitable.
    System.out.println("Name of the i-frames : " + numberOfFrames.get(i).getAttribute("name"));
}

// Back to your question - button lies inside iframe hence
// key here is before clicking you have to switch to the frame first

driver.switchTo().frame(driver.findElement(By.name("frame name")));

希望这对你有帮助

简意
2023-03-14

您不必使用由Firebug生成的XPaths并在此过程中检查元素的父级。我们可以做得更好,您可以编写一个更可靠、更简单的方法来定位元素:

driver.findElement(By.name("new"));

或:

driver.findElement(By.cssSelector("input[name=new]"));

或:

driver.findElement(By.cssSelector("input[value='New Account']"));

请注意,您使用的XPath表达式看起来是有效的。您可能遇到时间问题,需要等待元素出现、可见性或可点击性,请参阅:如何等待元素出现在Selenium?中?。

而且,如果按钮位于iframe中,则需要切换到其上下文,然后才搜索按钮:

driver.switchTo().frame("ext-comp-1005");
 类似资料:
  • 我已经自定义了应用程序中的所有单选按钮,但是listPreference中的单选按钮没有被自定义。 我用了这个名为btn_radio.xml 这是自定义的无线电按钮,它扩展了Android自定义单选按钮 在我的应用程序的主题中,我做了这些更改 此更改自定义我的应用程序中除列表首选项中的单选按钮之外的所有单选按钮

  • 问题内容: 阅读完之后:http : //pandas.pydata.org/pandas- docs/version/0.13.1/genic/pandas.DataFrame.sort.html 我似乎仍然无法弄清楚如何通过自定义列表对列进行排序。显然,默认排序是字母顺序的。我举一个例子。这是我的(非常删节的)数据帧: 我希望能够按播放器,年份和Tm进行排序。按玩家和年份的默认排序对我来说是正

  • 我是JAVAfx的新手,我正在尝试编写一个web浏览器。我面临的问题是:-我想把屏幕左下方的按钮放在右下方。 我正在尝试这段代码,但它不起作用。谁来帮帮我

  • 我的在中,我的在中 我的测试都运行正确,但是intelliJ拒绝查看步骤defs在哪里,即使我要求它创建一个新的步骤defs。这是在哪里配置的?

  • 我在spring Portlet a中定义了一个spring bean,我的问题是如何使用Portlet bean定位器在另一个Portlet B中定位这个bean,这可能吗,因为下面的行对我不起作用。 ps:我将Portlet中的ContextLoaderListener声明为web.xml,并使用contextConfigLocation来设置加载哪个上下文文件,这个bean是在上下文文件中定