【问题标题】:Object inside inner html not getting identified by selenium web driverselenium webdriver未识别innerhtml中的对象
【发布时间】:2016-12-14 17:23:33
【问题描述】:

我想选择并单击内部 html 中存在的对象(如图所示)。但是该对象没有被识别。我正在使用 Java。

注意 --> 我的应用程序无法使用除 Internet Explorer 以外的任何浏览器打开,我无法从控制台/调试器验证 xpath,因此我只能通过代码进行验证。

到目前为止我已经尝试过但不适合我的代码-->

选项 1 -->

driver.switchTo().frame("nav");
driver.findElement(By.xpath("//a href[@text='Administrate']")).click();

选项 2 -->

driver.switchTo().frame("nav");
driver.findElement(By.xpath("//a[@text='Administrate']")).click();

选项 3 -->

driver.findElement(By.xpath("/html/frameset/frame[1]/html/body/ul/li/ul/li[1]")).click();

【问题讨论】:

    标签: java selenium xpath selenium-webdriver


    【解决方案1】:

    您正在检查文本是否完全匹配,请改用contains

    driver.findElement(By.xpath("//a[contains(text(), 'Administrate')]")).click();
    

    或者

    driver.findElement(By.xpath("//a[contains(., 'Administrate')]")).click();
    

    请注意text()@text之间的区别

    【讨论】:

    • 似乎对象被识别为没有任何异常......但无法点击......请帮助
    • Thnkx "Guy" 使用 Javascript 进行点击,现在可以点击链接,但如果您有更好的想法,请分享... try{ WebElement element = selActionKeywords.driver.findElement(By.xpath ("//a[contains(text(), '管理系统')]")); JavascriptExecutor js = (JavascriptExecutor)selActionKeywords.driver; js.executeScript("arguments[0].click();", element); }catch(Exception e){ System.out.println("Exception --> "+ e); }
    【解决方案2】:

    你需要像这样改变你的 XPath

    driver.switchTo().frame("nav");
    driver.findElement(By.xpath("//a[text()='Administrate system']")).click();
    

    注意:- 在这里您需要传递完整的字符串以便更好地学习,请参考 Firepath 来创建和评估您的 xpath

    也可以使用contains方法在部分文本的基础上查找元素

    【讨论】:

    • 似乎对象被识别为没有任何异常......但无法点击......请帮助
    • 您的链接是否在网站菜单下?我认为在<ul> 标记style="DISPLAY: block" 之前在您的链接的<li>tag 下出现问题。
    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 2017-05-30
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多