所以我对selenium很新,我跟着文档做了一些机器人, 但是当我尝试登录社交媒体网络(twitter / instagram)时,它不会发送笔画。
代码:
#!usr/bin/env python3
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Firefox()
browser.get("https://www.instagram.com/accounts/login/")
elem = browser.find_element_by_name("username")
elem.send_keys('Laptops' + Keys.RETURN)
time.sleep(4)
browser.quit()
我已经通过使用browser.get_element_by_name / class / xpath尝试了它,但似乎没有任何效果。 错误代码:
Traceback (most recent call last):
File "ig.py", line 50, in <module>
login(driver)
File "ig.py", line 15, in login
driver.find_element_by_xpath("//div/input[@name='username']").send_keys(username)
File "/home/lario/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 365, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/home/lario/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 843, in find_element
'value': value})['value']
File "/home/lario/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute
self.error_handler.check_response(response)
File "/home/lario/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //div/input[@name='username']
OS = ubuntu17 驱动=火狐/ geckodriver python3.6 selenium3.6
我知道这段代码无法工作bc你需要一个密码和一个用户名,但它甚至不执行send_keys代码,因为tHAT上面的行有错误
答案 0 :(得分:0)
我在linux上的Firefox驱动程序也遇到了一些问题。 我复制了你的代码,只是将驱动程序更改为Chrome并且运行正常。 您可以在此处获取Chrome驱动程序: http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.chrome.webdriver
答案 1 :(得分:0)
尝试添加等待状态。但是,如果在执行某些检查之前禁用该元素,则可能需要EC.element_to_be_clickable。
FilmDatabase filmList = new FilmDatabase();
filmList = filmList.listInput("MainDBTest.txt");
int listLen = filmList.getFilmDB().size();
Object[][] filmTable = new Object[listLen][5];
for (int x = 0; x < listLen; x++) {
for(Film film : filmList.getFilmDB()) {
//System.out.println(film);
filmTable[x][0] = film.getFilmName();
filmTable[x][1] = film.getFilmRating();
filmTable[x][2] = film.getReleaseDate();
filmTable[x][3] = film.getFilmGenre();
filmTable[x][4] = film.getFilmCast();
System.out.println(film);
}
}
Object columnNames[] = { "Title", "Rating", "Year", "Genre", "Cast" };
JTable mainTable = new JTable(filmTable, columnNames);