- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取此亚马逊页面中列出的每台笔记本电脑的图像 URL ( https://www.amazon.com/s?rh=n%3A565108%2Cp_72%3A4-&pf_rd_i=565108&pf_rd_p=b2e34a42-7eb2-50c2-8561-292e13c797df&pf_rd_r=E87FK4Z32CV7VPR4EZGP&pf_rd_s=merchandised-search-11&pf_rd_t=BROWSE&ref=Oct_s9_apbd_otopr_hd_bw_b2N0e_S )。
该方法应该单击每个正在销售的列表,使用 driver.findElement(By.xpath(namesXpath)).getAttribute("src") 获取图像 URL 并将其保存到 URL 列表中。 。但是,当我尝试让驱动程序返回到包含所有笔记本电脑列表的页面,以便它可以继续通过 for 循环并获取其他列表的图像时,它给了我以下错误。我尝试过 driver.get(URL)、driver.navigate().to(URL) 和 driver.navigate().back() 但它们都无法带我回到上一页。
奇怪的是,在我的主要方法中, driver.get("https://amazon.com ") 工作正常, driver.findElement(by.xpath).click() 也工作正常。正是在这个方法中它崩溃了。
我是 s=java 和 selenium 的新手,所以我希望这一切都有意义。任何帮助,将不胜感激。如果您需要更多说明,请告诉我
Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//img [@id="detailImg"]"}
(Session info: chrome=81.0.4044.138)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'DESKTOP-AU2FJQL', ip: '192.168.0.245', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_251'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 81.0.4044.138, chrome: {chromedriverVersion: 81.0.4044.69 (6813546031a4b..., userDataDir: C:\Users\email\AppData\Loca...}, goog:chromeOptions: {debuggerAddress: localhost:50907}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:virtualAuthenticators: true}
Session ID: 1fe48e105aae883db4215eba6bb8c06b
*** Element info: {Using=xpath, value=//img [@id="detailImg"]}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:428)
at org.openqa.selenium.By$ByXPath.findElement(By.java:353)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:315)
at Executer.picsUpdateList(Executer.java:363)
at Executer.main(Executer.java:163)
public static String namesXpath = "//span[@data-a-strike=\"true\" or contains(@class,\"text-strike\")][.//text()]/preceding::span[@class][10]";
public static void picsUpdateList(WebDriver driver, List<String> URLs, List<BufferedImage> pics) throws IOException, InterruptedException
{
//list of deals on amazon page
List<WebElement> deals = driver.findElements(By.xpath(namesXpath));
//URL of each picture saved since this method was called
List<String> freshURLs = new ArrayList<String>();
//saves the URL of the page with all listings
String pageURL = driver.getCurrentUrl();
System.out.println(pageURL);
//1. clicks on each deal from List<> deals
//2. Grabs picture by xpath and saves the URL to both lists
//3.
for(WebElement deal : deals)
{
deal.click();
System.out.println("clicked on next deal");
Thread.sleep(time);
String url = driver.findElement(By.xpath("//img [@id=\"detailImg\"]")).getAttribute("src");
URLs.add(url);
freshURLs.add(url);
System.out.println(url);
/// ERROR HERE//////////////////////////
driver.navigate().back();
//////////////////////////////////////////
System.out.println("back to page");
Thread.sleep(time);
}
for(String url : freshURLs)
{
pics.add(ImageIO.read(new URL(url)));
}
}
最佳答案
我建议使用@id="landingImage"
而不是@id="detailImg"
。然后获取data-old-hires
字段值来获取url。这与您从 @id="detailImg"
获取的源网址相同(但正如我之前的评论中提到的,您可能需要先将鼠标悬停在屏幕中该元素之前的图像上弹出,我认为这是错误的原因)。
您可以先尝试使用您的代码,然后告诉我们这是否可以解决您的问题。
这是交易示例,请点击您提供的亚马逊页面网址。我已经用蓝色强调了上面提到的细节。希望这可以解决您的问题。
关于java - driver.get(URL)、driver.navigate().to(URL) 和 driver.navigate().back() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61882356/
我正在尝试获取此亚马逊页面中列出的每台笔记本电脑的图像 URL ( https://www.amazon.com/s?rh=n%3A565108%2Cp_72%3A4-&pf_rd_i=565108&
我正在设置 Atlassian Confluence,在选择数据库时,我在选择“使用外部 Mysql 数据库”时卡住了我看过一些教程,但对我来说,它并没有按照应有的方式工作。我使用 ubuntu 12
我是 Neo4J 的新手,正在尝试通过 java 连接到 Neo4J 服务器。 我的一个独立项目的pom入口如下: org.neo4j neo4j-o
所有这些有什么区别和用途? spark.local.ip spark.driver.host spark.driver.bind地址 spark.driver.hostname 如何将机器修复为 Sp
我在旧的 Inspiron 6400 计算机(GeForce 7300 笔记本电脑版)上安装了 Lubuntu 19.04,通过网络草稿编辑器教我儿子 Scratch。每次我通过 Firefox 打开
我使用 qt 开发了一个 c++ 库。在本文中,我使用 QSqlDatabase 从 SQLite 数据库中查询信息。注意:我的库在 qt 桌面应用程序中运行良好(我在 Linux 上开发)。 现在我
存在类似的问题,但没有帮助。 在 Apache 2.4 上安装 php5-fpm 通过 SSL 连接到远程 MySql 数据库。 可以通过命令行连接MySQL mysql -u myname -p'p
使用以下配置 (doctrine.yaml) 在 Symfony 4 中使用 Doctrine DBAL: dbal: # configure these for your database
使用以下配置 (doctrine.yaml) 在 Symfony 4 中使用 Doctrine DBAL: dbal: # configure these for your database
我有一个用 Java 编写的 Selenium Web 驱动程序测试,目标是 Liferay 站点。 // Login driver.get(baseUrl + "/"); driver.findEl
在driver.findElements()中,我们获得了另一个用于查找size()的函数,该函数在driver.findElement()中不可用。 这是唯一的区别吗? 最佳答案 driver.fi
这个问题已经有答案了: java.lang.IllegalStateException: The driver executable does not exist: while trying to e
简短描述:我有一个通过 SignTool 验证的签名驱动程序,但 Windows 拒绝加载它并出现错误:CodeIntegrity 3004 - 在系统上找不到文件哈希。我该如何解决这个问题? 详细说
我正在设置一些 Geb 测试,但出现“geb.driver.DriverCreationException:无法从回调创建驱动程序”错误。 Geb 将尝试启动测试浏览器窗口,但一旦启动,我的所有测试都
我想通过应用对象存储库概念在 Chrome 驱动程序中打开 url。下面给出的是我的 selenium 程序,其中包含两个文件,一个是 testng 文件,另一个是 config.property 文
我在 Ubuntu Linux、Spring Tools 2.7.1、Spring Roo 1.1.5 上运行 Eclipse Indigo。我正在阅读 Getting Started with Ro
打开 Url 的首选方法是什么(它们之间是否存在任何差异): driver.Url = "http://example.com"; 或 driver.Navigate().GoToUrl("http:
我使用 python 脚本传递给 cassandra 批处理查询,如下所示: query = 'BEGIN BATCH ' + 'insert into ... ; insert into ... ;
我在 Protractor 中执行脚本时出现以下错误。 System info: host: '8888', ip: '88888', os.name: 'Mac OS X', os.arch: 'x
我收到错误 KeyError:'driver'。 我想使用scrapy-selenium 创建一个网络爬虫。我的代码如下所示: class TestSpider(Spider): name="test
我是一名优秀的程序员,十分优秀!