现在两天就开始了:试图自动将联系请求发送给搜索结果中的多个人并附带消息。在登录和搜索之后,重复添加按钮的工作和add_btn.click()
打开弹出窗口。然而,只是在第一种情况下,我成功地通过try:
find_element_by_name
来访问<textarea name="reason">
并且可以做element.send_keys()
来插入我的消息。在第二次迭代中,我似乎无法访问邮件表单,但是,当我打印driver.find_elements_by_xpath("//*[@name]")
,<textarea name="reason">
的迭代时。Python&Selenium/XING:find_element第一次工作,而不是第二次迭代
我试图捕捉最常见的异常,但似乎并不奏效。
谁能解释PLS,1)这里发生了什么,为什么呼吁所有命名的元素可以列出textarea的,但我的具体打电话找不工作,和2)我怎么能解决这个问题。谢谢!
这里是我的代码的一部分,在搜索结果中去:
def contact(text):
add_btns=driver.find_elements_by_css_selector("a.searchResult-actionLink.foundation-icon-core-contact-add.contact-lightbox-link")
i=0
wanted=6
for add_btn in add_btns:
i+=1
try:
add_btn.click()
time.sleep(2)
driver.save_screenshot("add%s.png" % (i,)) ###works on every turn!
elems=driver.find_elements_by_xpath("//*[@name]")
for elem in elems:
print i, elem.tag_name, elem.get_attribute("name") ###prints out 'textarea reason' on every turn!
try:
mssgbrd = driver.find_element_by_name("reason")
print "mssgbrd found" ###prints only on first round???
mssgbrd.send_keys(text)
driver.save_screenshot("request%s.png" % (i,))
except ElementNotVisibleException:
print "not visible"
except StaleElementReferenceException:
print "stale"
except NoSuchElementException:
print "no such element"
except TimeoutException:
print "timed out"
except:
print "something else happens"
request=driver.wait.until(EC.presence_of_element_located(
(By.CSS_SELECTOR,"#crl-button-send-request > a.element-form-button-solid-lime")))
try:
request.click()
time.sleep(3)
except TimeoutException:
print("Button not found!")
driver.save_screenshot("ButtonError%s.png" % (i,))
except:
print "Request not working" ###prints out on second round and after
driver.save_screenshot("xibit%s.png" % (i,)) ###get's called on second round and after
当我运行这段代码,第一次成功的迭代之后我不断收到的最后一个异常“请求不工作”的所有其他迭代。我已经用close_button.click()
测试了关闭弹出窗口而不是发送请求 - 这里第二次迭代成功。
它是否打印“别的事情发生”?我可以访问你的应用吗?我认为你可能需要等待原因。 – Buaban
@Buaban不,它只打印最后一个异常。它实际上不是一个应用程序,我登录到他们的网站并使用Selenium/PhantomJS自动浏览和发送文本。我阅读[这里](https://stackoverflow.com/questions/44293962/unable-to-access-element-within-page)关于单击某个特定按钮后元素更改的可能性,也许会发生什么?但我不知道如何解决这个问题。我也试过'driver.wait.until(EC.presence_of_element_located((By.NAME,“reason”)))'给了我相同的结果。 – user2822564