wait = WebDriverWait(driver,30).until(lambda driver: driver.find_element_by_xpath('//tbody/tr[296]/td/div'))
根据我的理解,这将等待30秒加载或超时xpath。 3/7次左右,我的程序将失败并说无法找到这个div,但我不知道为什么。我想也许它没有加载,所以我尝试了这个代码,以及driver.implicitly_wait(30),它仍然无法找到xpath SOMETIMES。
编辑:这是我的代码
def testPolicy(self):
driver = self.driver
driver.get('website')
wait = WebDriverWait(driver,20).until(lambda driver: driver.find_element_by_name('accessFrame'))
driver.switch_to_frame('accessFrame')
driver.find_element_by_name('adminName').send_keys('jacob')
driver.find_element_by_name('pass').send_keys('123')
driver.find_element_by_xpath('//*[@id="ext-gen1009"]/form/table/tbody/tr[8]/td/input').click()
wait = WebDriverWait(driver,20).until(lambda driver: driver.find_element_by_id('navigationButton-btnInnerEl'))
driver.find_element_by_id('button-1034-btnInnerEl').click()
nav = driver.find_element_by_id('navigationButton-btnInnerEl')
if nav.text == 'Classic':
nav.click()
wait = WebDriverWait(driver,30).until(lambda driver: driver.find_element_by_xpath('//tbody/tr[296]/td/div'))
policy = driver.find_element_by_xpath('//tbody/tr[296]/td/div')
print policy.text
assert policy.text == 'Policies'
policy.click()
wait = WebDriverWait(driver,30).until(lambda driver: driver.find_element_by_xpath('//span[text()="Add Folder"]'))
driver.find_element_by_xpath('//span[text()="Add Folder"]').click()
alert = driver.switch_to_alert()
rand = random.choice(range(100))
driver.find_element_by_id('ext-gen1001').send_keys('autoPolicy'+str(rand))
driver.find_element_by_id('button-1009-btnInnerEl').click()
driver.refresh()
driver.implicitly_wait(15)
folder = 'autoPolicy'+str(rand)
print folder
driver.find_element_by_xpath('//div[text()=folder]')
driver.find_element_by_xpath('//span[text()="Add Policy"]').click()
由于某些原因我似乎无法获得的HTML,但这里基本上是我正在看的
<tr class='x-grid-row' data-qtip'= 'Name'> .. </tr>
这些行的100行,我想要的代码在其中一个
中<div class='x-grid-cell-inner- x-unselectable' ........>Name</div>
我没有任何搜索此元素的好方法,因此我使用直接xpath。对于这些100的TR,它们基本上都是我正在测试的Web应用程序上的模块的链接。我的代码使树全部展开,在那段时间里,我有了想要点击的模块的webdriverwait。在视觉上它几乎立即加载,因此在定位之前很难说元素超时。