2017-01-04 12 views
1

正しいxpathを取得すること、またはこの要素をSeleniumで見つけるのは苦労しています。このエラーの表示:org.openqa.selenium.NoSuchElementException:そのような要素がありません:要素を見つけることができません

FAILED:homeLoan( "John Smith"、 "[email protected]"、 "Australia"、 "1563"、 "62365896410"、 "Home Loan"、 "Buying"、 "100000 "、" 50000 ") org.openqa.selenium.NoSuchElementException:要素が見つかりません:要素「{"メソッド ":"名前 "、"セレクター ":"フルネーム "}を見つけることができません

セルレンのコードは:

@Test(dataProvider="homeLoan") 
public void homeLoan(String fullname, String email, String countryTypes, String postcode, String phone, String loanType, String loanPurposes, String securityValue, String homeLoanAmount) throws Exception { 
    // open | https://test-www.loans.com.au/ 
    driver.get("https://test-www.loans.com.au/"); 
    // click | link=contact | 
    driver.findElement(By.linkText("contact")).click(); 
    // type | name=FullName 
    **driver.findElement(By.name("FullName")).clear(); 
    driver.findElement(By.name("FullName")).sendKeys(fullname);** 
    // type | name=Email 
    driver.findElement(By.name("Email")).clear(); 
    driver.findElement(By.name("Email")).sendKeys(email); 

これは、HTMLであり、私は私が探ししようとしています要素がiframe内にあると思う:

<body style="overflow:hidden;" onload="iframe_resize();"> 
<div class="UWP"> 
<link id="cssLink" type="text/css" rel="stylesheet" data-bind="attr: { href: customStylesheetLocation}" href="/CMSPages/GetResource.ashx?stylesheetname=Referrer_Loans"/> 
<!--<div data-bind="template: { name: 'loading' }, visible: IsLoading()"></div>--> 
<input id="SessionLandingPageOriginalUrl" name="SessionLandingPageOriginalUrl" value="https://test-www.loans.com.au:443/uwp/callme/?sl=loans&typeid=5&action=hs&f=UWPIFrameCallSingleColumn" type="hidden"/> 
<input id="SessionID" name="SessionID" value="yfuywfsdebpmcv0j3i1peylw" type="hidden"/> 
<input id="SessionHostServer" name="SessionHostServer" value="TEST-K9-A1" type="hidden"/> 
<input id="SessionReferrerUrl" name="SessionReferrerUrl" value="https://test-www.loans.com.au/" type="hidden"/> 
<input id="ClientIPAddress" name="ClientIPAddress" value="172.21.0.200" type="hidden"/> 
<input id="ClientUserAgent" name="ClientUserAgent" value="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0" type="hidden"/> 
<input id="ClientJavascriptEnabled" data-val="true" data-val-required="The ClientJavascriptEnabled field is required." name="ClientJavascriptEnabled" value="False" type="hidden"/> 
<input id="ClientCookiesEnabled" data-val="true" data-val-required="The ClientCookiesEnabled field is required." name="ClientCookiesEnabled" value="False" type="hidden"/> 
<div id="container" data-bind="visible: !IsLoading()" style=""> 
<div class="col-sm-12"> 
<div class="form-group"> 
<div data-bind="template: { name: 'commoncontrol', data: CommonControl }"> 
<div data-bind="visible:ShowCustomerDetails"> 
<div data-bind="visible:ShowNewCustomerButtons"> 
<div class="control col-sm-12 valid"> 
<div class="form-group"> 
**<input class="form-control inputbox bg-icon-name" placeholder="Full Name*" data-bind="attr: { name: FieldPrefix() + 'FullName' }, value: FullName, enable: ShowCustomerDetails" required="required" name="FullName" type="text"/>** 
<div class="field-error">This field is required.</div> 
</div> 
</div> 
<div class="control col-sm-12" style="margin-top:-15px;" data-bind="css: { invalid: ShowNameError() }"> 
<div class="control col-sm-12 valid"> 

太字のhtmlコードは、xpathを探しているHTMLコードです。

助けてください。前もって感謝します。

+0

'cssSelector'を' driver.findElement(By.cssSelector( "input [type = 'text'] [name = 'FullName']")); ' – ochi

+0

のように試してみることができます。私もこれを試してみました:driver.findElement(By.cssSelector( "input [name = \" FullName \ "]"))。そしてスローは働かない。他の提案はありますか? –

+0

あなたはiFrameの中で何かを選択しているとは言わなかった。その場合は、@Renatoの答えをご覧ください。これは、あなたのコードの完全な画像を[mcve] – ochi

答えて

1

あなたは要素を見つけるためにしようとする前にあなたがしなければならないのは、次のように、フレームにスイッチです:

driver.switchTo().frame("UWPIFrame"); 

あなたのコードは次のようになります。

@Test(dataProvider="homeLoan") 
public void homeLoan(String fullname, String email, String countryTypes, String postcode, String phone, String loanType, String loanPurposes, String securityValue, String homeLoanAmount) throws Exception { 
    // open | https://test-www.loans.com.au/ 
    driver.get("https://test-www.loans.com.au/"); 
    // click | link=contact | 
    driver.findElement(By.linkText("contact")).click(); 
    //Switch to the frame 
    driver.switchTo().frame("UWPIFrame"); 
    // type | name=FullName 
    driver.findElement(By.name("FullName")).clear(); 
    driver.findElement(By.name("FullName")).sendKeys(fullname); 
    // type | name=Email 
    driver.findElement(By.name("Email")).clear(); 
    driver.findElement(By.name("Email")).sendKeys(email); 

しかし、覚えて、 iframeに含まれていない別の要素を見つけようとすると、次のようなデフォルトのコンテンツに戻す必要があります:

driver.switchTo().defaultContent(); 
+0

で提供することが重要な理由です。これはすでにiFrameに切り替えることで既に機能しています。みんな、ありがとう! –

関連する問題