【问题标题】:Cant find the element (xpath) in RSelenium of a specific website在特定网站的 RSelenium 中找不到元素(xpath)
【发布时间】:2022-01-06 22:38:48
【问题描述】:

我正在使用RSelenium 对网站https://unicancer.sigaps.fr/ 进行一些网页抓取。

我想回顾一下我的团队 sigaps 积分(对于那些不知道的人,当您在科学杂志上发表文章时,您会获得积分,获得的积分越多,您获得的认可就越多)。我想自动化,收集这些数据。

所以我已经在其他网站上使用了RSelenium 并且它有效,但是在这个特定的网站上我找不到具有这些功能的 html 标签:

remDr$findElement(using = "xpath", value = "/html/body/div[1]/div/div[2]/form/table/tbody/tr[2]/td[2]/input")$sendKeysToElement(list(username))
remDr$findElement(using = "name", value = "mdp")$sendKeysToElement(list(password))

我尝试使用 xpath 和名称标签,但两者都不起作用。我找不到任何页面元素。

我收到此错误:

   Selenium message:no such element: Unable to locate element: 
   {"method":"xpath","selector":"/html/body/div[1]/div/div[2]/form/table/tbody/tr[2]/td[2]/input"}
   (Session info: chrome=96.0.4664.45)
   For documentation on this error, please visit: 
   https://www.seleniumhq.org/exceptions/no_such_element.html
   Build info: version: '4.0.0-alpha-2', revision: 'f148142cf8', time: '2019-07-01T21:30:10'
   System info: host: 'PD06B6F', ip: '10.208.107.111', os.name: 'Windows 10', os.arch: 'amd64', 
   os.version: '10.0', java.version: '1.8.0_261'
   Driver info: driver.version: unknown
 
   Error:    Summary: NoSuchElement
     Detail: An element could not be located on the page using the given search parameters.
     class: org.openqa.selenium.NoSuchElementException
     Further Details: run errorDetails method

当我用浏览器查看页面代码时,我可以识别出 html 元素:

<input name="login" class="text_box" type="text">

所以网站有问题,我需要解决RSelenium和它的交互问题。

这是我的全部代码(可能是 docker 问题。虽然我不是网络开发人员,但我真的不知道它是什么)

rD <- rsDriver(browser= "chrome", port = 3955L,chromever = "96.0.4664.45")
remDr <- rD[["client"]]
 
remDr$navigate("https://unicancer.sigaps.fr/")
 
remDr$screenshot(TRUE)
 
username <- "xyz"
password <- "lol93"
 
 
remDr$findElement(using = "xpath", value = "/html/body/div[1]/div/div[2]/form/table/tbody/tr[2]/td[2]/input")$sendKeysToElement(list(username))
remDr$findElement(using = "name", value = "mdp")$sendKeysToElement(list(password))
 
rD$server$stop()
remDr$close()
system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)

【问题讨论】:

    标签: html r web rselenium findelement


    【解决方案1】:

    我们必须使用switchToFrame,它通常用于iframe。虽然此网站没有iframe,但我们使用switchToFrame 将焦点转移到frame

    #credentials
    username <- "xyz"
    password <- "lol93"
    

    启动浏览器

    library(RSelenium)
    driver = rsDriver(browser = c("firefox"))
    remDr <- driver[["client"]]
    remDr$navigate(url)
    url = "https://unicancer.sigaps.fr/"
    

    现在使用switchToFrame关注frame

    webElem <- remDr$findElements("css", "frame")
    remDr$switchToFrame(webElem[[1]])
     remDr$findElement(using = "xpath", '//*[@id="scrollup2"]/div/font')$getElementText()
    

    填写凭据

    remDr$findElement(using = "xpath", value = '//*[@id="menu_page_enveloppe"]/div[2]/form/table/tbody/tr[2]/td[2]/input')$sendKeysToElement(list(username))
    
    remDr$findElement(using = "xpath", value = '//*[@id="menu_page_enveloppe"]/div[2]/form/table/tbody/tr[3]/td[2]/input')$sendKeysToElement(list(password))
    

    【讨论】:

    • 早上好,先生,效果很好。谢谢你的建议!
    • 是的,当然!完成^^。顺便说一句,您知道如何通过 RSelenium 配置 chrome 以自动接受我要下载的 excel 文件的提示吗?这是我的最后一步,我正在努力。
    • 好吧,我使用了 remDr$accceptAlert() 并且它接受了提示窗口。所以现在我只需要找到如何指定我想要我的 Excel 的文件夹的路径。
    • 要自动下载文件,您可以参考这些答案。 stackoverflow.com/a/65201209/12135618 或者这个stackoverflow.com/questions/35551711/…
    • 我已经检查了这些主题,但它对我不起作用。但我设法通过使用基本 R 直接移动和编辑文件来避免这个问题。非常感谢您的宝贵时间!
    猜你喜欢
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多