作为我们基于网络的应用程序的一部分,客户必须在docusign中签订合同,然后生成初始合同。
在文档中,在某些地方需要客户初始化,并且需要一些地方客户签名(这些不是有序的)。我能够做到以下几点。但我得到“元素不可见”的消息。我想当有“初始在这里”时,点击将移动到“在这里签名”。对于所选择的每个合同,这种情如何编写代码以适应这种情况?请告诉我。
try:
self.driver.find_element_by_id("chkUserEsign").click()
time.sleep(5)
self.driver.find_element_by_id("ds_hldrBdy_dlgStart_startReview_btnInline").click()
except NoSuchElementException as e:
print('retry in 10s.')
time.sleep(1)
try:
self.driver.find_element_by_id("ds_hldrBdy_navnexttext_btnInline").click()
except NoSuchElementException as e:
print('retry in 9s.')
time.sleep(1)
try:
listofinitial = self.driver.find_elements_by_xpath("//input[@type='image' and @title='Initial Here']")
for i in listofinitial:
i.click()
self.driver.find_element_by_id("ds_hldrBdy_dlgAdoptSig_btnAdoptSignature_btnInline").click()
listofsign = self.driver.find_elements_by_xpath("//input[@type='image' and @title='Sign Here']")
for j in listofsign:
j.click()
except NoSuchElementException as e:
print('retry in 5s.')
time.sleep(1)
答案 0 :(得分:0)
如果能够使用指定的唯一定位器在HTML DOM中找到它,则Click函数将始终单击该元素。除非您使用绝对Xpath或CSS选择器,否则UI中元素的位置无关紧要。 在你的情况下,我假设在UI中可以看到'Initial Here'或'Sign Here'元素,并且你试图找到两者,因为'Element Not Visible'导致测试脚本失败
WebDriver中有一个'isDisplayed'函数,用于检查元素的可见性并返回一个布尔值,为什么在执行单击操作之前不检查两个定位器的可见性。