刮除隐藏元素

我的问题是双重的:


1) 我正在尝试使用下面的代码登录此页面,源在此处。可以使用我提供的凭据,该凭据将在28天后过期,但是为之后查看此内容的用户创建一个试用帐户相对容易。


from selenium import webdriver

driver_path = 'Path to my downloaded chromedriver.exe file'

url_login = 'https://www.findacode.com/signin.html'

username = 'jd@mailinator.com'

password = 'm%$)-Y95*^.1Gin+'


options = webdriver.ChromeOptions()

options.add_argument('headless')

driver = webdriver.Chrome(executable_path=driver_path, chrome_options=options)


driver.get(url_login)

assert '_submit_check' in driver.page_source

driver.find_element_by_name('id').send_keys(username)

driver.find_element_by_name('password').send_keys(password)

driver.find_element_by_xpath("//input[@value='Sign In']").submit()

我收到所有 3 个元素的以下错误:


selenium.common.exceptions.ElementNotVisibleException: Message: element not visible

我对 html/css/javscript 的命令没有那么强,但我尝试过使用每个线程的等待并收到超时。接下来打算从该线程尝试 ActionChains,但很想听听对此有更多了解的人如何继续。


2)最终,我想通过在循环中改变代码(url 的最后 5 个字符)从这个url(源here)中抓取特定的代码历史数据。用户必须登录,因此我上面的第一个问题是,在浏览器中查看我想要的信息的方法是展开浅紫色的“代码历史”表。我需要的具体信息是“操作”列为“已添加”且“注释”列为“已添加代码”的任何行中的日期:


Date       Action Notes 

2018-01-01 Added  First appearance in code

2017-02-01 Added  Code Added

我在这里的问题是,由于我认为表格是隐藏的,因此需要通过单击来扩展该表格以显示我要查找的数据,我该如何进行?


编辑 这里的代码、伪代码和评论来解释我的第二个问题。


url_code = "https://www.findacode.com/code.php?set=CPT&c="

driver.get(url_code+'0001U') # i'm presuming that this will preserve the login session

driver.find_element_by_id('history').click() # i intend for this to expand the Code History section and expose the table shown earlier in the post but it's not doing that

check whether the phrase "Code Added" occurs in page source

if so, grab the date that is in the <td nowrap> tag that is 2 tags to the left

如果无法使用Selenium,我可以在后两行中使用BeautifulSoup,但是我需要帮助了解为什么我看不到要抓取的数据


aluckdog
浏览 111回答 2
2回答

幕布斯7119047

有网页两种形式与投入@name="id",@name="password"以及“登录”按钮。第一个是隐藏的。您需要使用以下方式处理表单@name="login":form = driver.find_element_by_name('login')form.find_element_by_name('id').send_keys(username)form.find_element_by_name('password').send_keys(password)form.find_element_by_xpath("//input[@value='Sign In']").submit()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python