为r-硒找到正确的CSS标签

时间:2018-09-24 10:44:31

标签: r selenium web-scraping css-selectors rselenium

我已使用this教程来了解RSelenium。对我来说很好。

我现在尝试在另一页(Github)上使用该方法,但是我不确定如何找到将鼠标聚焦在正确字段上的CSS标签。

library(RSelenium) 
driver <- rsDriver(browser = "chrome") # start browser
remDr <- driver[["client"]] 

# Go to desired webpage
remDr$navigate("https://github.com/login")

login_id <- remDr$findElement(using = "css",  "login_field")
login_id $sendKeysToElement(list("my_login_name"))

如果我使用选择器小工具,它会告诉我电子邮件/用户名框的标签为#login_field

如果我inspect的那部分网页,我被告知以下几位对应于该框:

<input type="text" name="login" id="login_field" class="form-control input-block" tabindex="1" autocapitalize="off" autocorrect="off" autofocus="autofocus">

但是如果运行上面的代码,则会收到以下错误消息:

Selenium message:no such element: Unable to locate element: {"method":"css selector","selector":"login_field"}
  (Session info: chrome=69.0.3497.100)
  (Driver info: chromedriver=70.0.3538.16 (16ed95b41bb05e565b11fb66ac33c660b721f778),platform=Windows NT 10.0.14393 x86_64)

Error:   Summary: NoSuchElement
     Detail: An element could not be located on the page using the given search parameters.
     Further Details: run errorDetails method

感谢您的帮助,如何正确选择要输入的CSS标记。谢谢!

2 个答案:

答案 0 :(得分:1)

除法律规定外,它还可以与remDr$findElement(using = "id", value = "login_field")一起使用。因此,using = "id"而非using = "css"

答案 1 :(得分:-1)

要将字符序列发送到网页https://github.com/login上的用户名或电子邮件地址字段,您需要引入 WebDriverWait 并不能使用以下CSS_SELECTOR

input.form-control.input-block#login_field

一个 Python 示例:

driver.get("https://github.com/login")
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.form-control.input-block#login_field"))).send_keys('ulima2_')

浏览器快照:

Github_Login