Javascript 使用长xpath的量角器xpath标识

Javascript 使用长xpath的量角器xpath标识,javascript,testing,xpath,protractor,end-to-end,Javascript,Testing,Xpath,Protractor,End To End,新的量角器脚本 根据下面的运行,有没有关于我为什么无法在堆栈跟踪中找到元素的反馈 TempString = browser.driver.findElement(by.xpath("/html/body/section/div/form/section/section[2]/div/div/div[1]/div/div/div[3]/div[2]/div[2]/div[1]/div[1]/h3")).getText(); 这是mortgagecalculator.org网站上的“每月付款”字段

新的量角器脚本

根据下面的运行,有没有关于我为什么无法在堆栈跟踪中找到元素的反馈

TempString = browser.driver.findElement(by.xpath("/html/body/section/div/form/section/section[2]/div/div/div[1]/div/div/div[3]/div[2]/div[2]/div[1]/div[1]/h3")).getText();
这是mortgagecalculator.org网站上的“每月付款”字段。

依赖“每月付款”文本并获得:


由于“每月付款”文本有两个元素,因此您可以使用来获取这两个元素,并使用
first()
last()
来获取所需的元素:

var monthlyPayments = element.all(by.xpath('//span[contains(., "Monthly Payment")]/preceding-sibling::h3'))

monthlyPayments.first().getText();  
monthlyPayments.last().getText();

我尝试了单引号和双引号;运气不好。您是否尝试过:
/*@id=“calc”]/form/section/section[2]/div/div/div[1]/div/div/div[3]/div[2]/div[1]/div[1]/h3
?这是Chrome的element inspector给我的。在任何情况下,我认为在开始时都需要一个双正斜杠。@IsaacLyman我认为这样的xpath太复杂了,请查看我的答案。谢谢。这是一个很好的方法。我想指出的是,我个人从来没有使用过xpath,因为它太脆弱了——页面的一点点变化就会抹去所有xpath。我更喜欢制作巧妙的CSS路径。但是您的xpath应该是非常可靠的,因为它发现了不太可能改变的措辞。@alecxe学习量角器js语法的速度很慢:很难找到“List”方法的良好文档源。也就是说,我的脚本在尝试遍历数组时出错……有什么想法吗?见答案
var monthlyPayments = element.all(by.xpath('//span[contains(., "Monthly Payment")]/preceding-sibling::h3'))

monthlyPayments.first().getText();  
monthlyPayments.last().getText();
browser.driver.findElement(by.xpath("//input[@value='Calculate']")).click();
        var TempStringList;
        var fTempString;
        var sTempString;

    //attempt to get everything on the page with span label Monthly     Payment - note there are two
    TempStringList = browser.driver.findElements(by.xpath('//span    [contains(., " Monthly Payment")]/preceding-sibling::h3'));
    //GOOD TO HERE ON RUN BUT PROBLEM BELOW WITH NAVIGATING THE     ARRAY LIST
    fTempString = TempStringList.first().getText();