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

使用selenium webdriver选择按钮时出现问题

贺桐
2023-03-14

我正在尝试不同的方式选择一个特定的按钮使用seleninum webdriver与Java,但不幸的是,没有任何工作。

当我测试使用Selenium时,IDE是工作的。例如,我复制了相同的xpath,但当我试图在Java应用程序中进行测试时,任何东西都不起作用。我尝试使用不同的方法,通过.cssselector和通过.path。

这是我的HTML:

<section class="fd-section"><fd-action-bar><div class="fd-action-bar"><fd-action-bar-header class="fd-action-bar__header"><fd-action-bar-title><h1 class="fd-action-bar__title"> Applications </h1></fd-action-bar-title></fd-action-bar-header><fd-action-bar-actions class="fd-action-bar__actions"><y-list-search _nghost-c4="" hidden=""><!----><!----><div _ngcontent-c4="" clickoutsideevents="click,mousedown" excludebeforeclick="true" class="ng-star-inserted"><!----><button _ngcontent-c4="" fd-button="" class="fd-button xyz-icon--search fd-button--light ng-star-inserted"></button><!----></div></y-list-search><y-list-filter _nghost-c5="" hidden=""><!----></y-list-filter><!----><button class="open-create-namespace-modal fd-button xyz-icon--add ng-star-inserted" fd-button=""> Create Application </button></fd-action-bar-actions></div></fd-action-bar></section>

我需要选择带有文本“Create Application”的按钮。

当我使用Selenium IDE创建测试时,此按钮的xpath是:

//按钮[包含(.,“创建应用程序”)]

基本上,我的Java代码是:

public WebElement wElement;

wElement = driver.findElement(By.xpath("//button[contains(.,' Create Application')]"));

wElement.click();

这是异常消息:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//button[contains(.,' Create Application')]"}
  (Session info: chrome=76.0.3809.100)
  (Driver info: chromedriver=72.0.3626.69 (3c16f8a135abc0d4da2dff33804db79b849a7c38),platform=Mac OS X 10.14.6 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: 'C02WW0BZHTD8', ip: 'fe80:0:0:0:8f6:17e1:1a28:1e23%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.6', java.version: '1.8.0_171'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 72.0.3626.69 (3c16f8a135abc..., userDataDir: /var/folders/2r/99nyn7t16cz...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:60374}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: MAC, platformName: MAC, proxy: Proxy(), rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 76.0.3809.100, webStorageEnabled: true}
Session ID: b2341899cd9b62b0169b02371aaa3018
*** Element info: {Using=xpath, value=//button[contains(.,' Create Application')]}

共有2个答案

洪伟彦
2023-03-14

您可以在这种情况下使用JavascriptExecutor接口,并尝试单击按钮。

WebElement element = driver.findElement(By.xpath("//button[contains(text(),'Create Application')]"));
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", element);

也可以尝试一下WebDriverWait

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(text(),'Create Application')]"))).click();
平庆
2023-03-14

当执行这段代码时,按钮是否已经加载到页面中?

{implicit:0,pageLoad:300000,script:30000}表示驱动程序不会隐式等待找到任何元素。即如果元素不可用,它将立即抛出异常。

尝试查找按钮之前,请尝试driver.manage().timeouts().implicitlywait(10,timeunit.seconds);

也可以尝试使用下面的定位器-

  1. //按钮[包含(.,“创建应用程序”)]
  2. //按钮[包含(文本(),“创建应用程序”)]

如果以上都不起作用,请你能提供一个URL吗(如果是公开的)

还要检查按钮是否在框架内。

 类似资料:
  • 我正在尝试从一组大小未知的单选按钮中进行选择。(多套,但一步一步..)在实际站点上,它们不是值的text1。表单id是随机生成的,但遵循一种模式。所以我不能真的使用它。我得到了一个一致的课程.. 我已经尝试添加结束,什么也不会发生。

  • 问题内容: 我一直在为FF写我的脚本,但希望他们所做的工作很少,它们也可以在其他浏览器上运行,但是IE驱动程序似乎存在按钮问题? 我在按钮上有一个简单的webelement.click(),不会引发错误,但不单击按钮。在FF它的罚款。我可以获取文本,获取价值,所以我知道find语句是可以的,只是不会单击它。 想法或帮助会很棒 只是做 HTML-控件上有3个按钮,我现在只对登录感兴趣 问题答案: 遇

  • 我正试图从以下网站“url=”上抓取内容https://angel.co/life-sciences' ". 该网站包含8000多个数据。从这个页面我需要像公司名称和链接,加入日期和追随者的信息。在此之前,我需要通过单击按钮对followers列进行排序。然后单击“更多隐藏”按钮加载更多信息。页面最多可点击20次(隐藏更多)内容,此后不会加载更多信息。但我只能通过排序来获取顶级追随者的信息。这里我

  • 我已经搜索了前面的一些问题,并没有能够纠正--我是一个完全的新手,所以请原谅我的无知...尝试使用以下方法选择页面上的第三个“单选”按钮: 结果是: “消息:没有此类元素:找不到元素:{”method“:”XPath“,”Selector“:”//[@id=“Wizard_Tabs”]/div/div[1]/div/ul/li[3]/input“}”

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • import { Checker,CheckerItem } from 'feui'; components: { [Checker.name]: Checker, [CheckerItem.name]: CheckerItem }, data () { return { items1: [ { key: "1",