Как найти элемент, используя Selenium и Java - PullRequest
0 голосов
/ 09 апреля 2019

Я не узнал локатор в данном коде для выполнения автоматического тестирования.

HTML элемента:

<a href="https://www.amazon.in/ap/signin?openid.pape.max_auth_age=0&openid.retu…%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&" class="nav-a nav-a-2" data-nav-ref="nav_ya_signin" data-nav-role="signin" data-ux-jq-mouseenter="true" id="nav-link-accountList" tabindex="25">

Ошибка трассировки стека:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='nav-link-accountList']/span[3]"}
  (Session info: chrome=73.0.3683.86)
  (Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10.10 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'LAPTOP-118FCQKH', ip: '192.168.43.44', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_181'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9), userDataDir=C:\Users\Hp\AppData\Local\Temp\scoped_dir5888_21816}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=73.0.3683.86, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
Session ID: 107d4a42af64419e98016e7927c7dde3
*** Element info: {Using=xpath, value=//*[@id='nav-link-accountList']/span[3]}

Ответы [ 4 ]

1 голос
/ 10 апреля 2019

Идентификатор есть, поэтому используйте его как самый быстрый способ выбора

#nav-link-accountList
0 голосов
/ 10 апреля 2019

Похоже, вы пытаетесь щелкнуть третий элемент span под заданным вами элементом привязки. Используемый XPath, выдающий ошибку, не относится к указанному вами элементу.

Данный элемент имеет идентификатор. Таким образом, вы можете непосредственно найти элемент по id.

Использование ID:

Webdriver driver = new ChromeDriver();    
driver.findElement(By.id("nav-link-accountList"));

Использование Css Selector:

Webdriver driver = new ChromeDriver();
driver.findElement(By.cssSelector("#nav-link-accountList"));

Использование XPath:

Webdriver driver = new ChromeDriver();
driver.findElement(By.xpath("//*[@id='nav-link-accountList']"));
0 голосов
/ 10 апреля 2019

Возможно, вы пытаетесь click() на элементе с текстом Войдите в систему на amazon.in и для этого вам необходимо:

  • Наведите указатель мыши элемент с текстом Ваши заказы / Аккаунт и списки
  • Нажмите на элементе стекст как Вход
  • Вы можете использовать следующие решения:

    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("http://www.amazon.in");
    new Actions(driver).moveToElement(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='nav-tools']/a//span[@class='nav-line-2']")))).build().perform();
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='nav-action-inner' and text()='Sign in']"))).click();
    
0 голосов
/ 10 апреля 2019

Вы можете использовать ниже xpath, чтобы выбрать ссылку

//a[@class='nav-a nav-a-2' and @data-nav-role='signin']

Или ты должен быть хорош с

//a[@data-nav-role='signin']

CSS локатор

a[data-nav-role='signin']
...