我正在尝试将Selenium与Python结合使用来登录网页。我已经到了可以成功输入用户名和密码的地步。最初,我尝试仅使用密码字段中的“ Enter”键,就像这样-
func getFiltered() {
guard let url = URL(string: "https://somereader.com/reader/api/0/s=user/-/state/com.google/starred/items/ids?output=json")
else {return}
var request = URLRequest(url: url)
request.httpMethod = "GET"
URLSession.shared.dataTask(with: request) { (data, response, error) in
guard error == nil else { print("error is \(error!.localizedDescription)"); return }
guard let data = data else { print("Empty data"); return }
let returnData = String(data: data, encoding: .utf8)
print("returnData is \(returnData)")
}.resume()
}
这对我不起作用,即使当我的光标位于密码字段中时按Enter键也可以使我正常。
所以现在我要尝试单击登录按钮,但是我的问题是我似乎无法正确找到该元素。
在Chrome控制台中,按钮是这样列出的(为便于阅读,添加了新行)-
passwordField = browser.find_element_by_css_selector('#password')
passwordField.send_keys(Keys.ENTER)
类名包含空格,所以我尝试了这个-
<button class="btn__primary--large from__button--floating mercado-button--primary"
data-litms-control-urn="login-submit"
type="submit" aria-label="Sign in">Sign in</button>
不幸的是,硒找不到该元素-
signInButton = browser.find_element_by_class_name('btn__primary--large from__button--floating mercado-button--primary')
signInButton.click()
如何定位此登录按钮?
编辑:这是网址-https://www.linkedin.com/login?fromSignIn=true&trk=guest_homepage-basic_nav-header-signin
答案 0 :(得分:1)
显然,它尝试将整个字符串视为一个类,但是它们是多个类。您是否尝试过仅传递一个班级名称? 尽管有可能找到多个项目。也许您最好找个#id来代替?
答案 1 :(得分:0)
尝试使用以下内容按类获取元素,然后单击它。
driver.find_element_by_class_name("mercado-button--primary").click()