为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用硒和Java查找元素

如何使用硒和Java查找元素

犯罪嫌疑人X 2022-09-28 09:46:53
我没有识别给定代码中的定位器来执行自动化测试。元素的网页:<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 secondsFor documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.htmlBuild 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.ChromeDriverCapabilities [{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 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

有一个ID,因此将其用作最快的选择器方法

#nav-link-accountList


查看完整回答
反对 回复 2022-09-28
?
互换的青春

TA贡献1797条经验 获得超6个赞

您可能正在尝试在元素上使用文本作为登录 amazon.in,并且要实现这一点,您需要:click()

  • 鼠标悬停带有文本的元素作为您的订单/帐户&列表

  • 单击带有文本的元素,如 登录

  • 您可以使用以下解决方案:

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();


查看完整回答
反对 回复 2022-09-28
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

看起来您正在尝试单击给定锚点元素下的第三个 span 元素。给出错误的 XPath 不适用于您给出的元素。


给定的元素具有 id。因此,您可以直接通过 id 找到元素。


使用标识:


Webdriver driver = new ChromeDriver();    

driver.findElement(By.id("nav-link-accountList"));

使用 Css 选择器:


Webdriver driver = new ChromeDriver();

driver.findElement(By.cssSelector("#nav-link-accountList"));

使用 X 路径:


Webdriver driver = new ChromeDriver();

driver.findElement(By.xpath("//*[@id='nav-link-accountList']"));


查看完整回答
反对 回复 2022-09-28
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您可以使用下面的 xpath 选择链接

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

或者你应该擅长

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

定位器

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


查看完整回答
反对 回复 2022-09-28
  • 4 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信