我试图获取元素的文本,其中该元素是表的项。我确切知道该数据的位置,并相应地修改CSS选择器字符串以获取它。
我的代码或上游代码都没有抛出任何异常。
以下是有问题的代码:
rscSelector = '#ctl00_ctl00_contentMainPlaceHolder_MainContent_dlRSCName > tbody > tr > ' \
'td:nth-child({}) > table > tbody > tr:nth-child(1) > td > ' \
'span'.format(str(count+1)) # This element is 1 indexed, why? who knows
element = chrome.find_element_by_css_selector(rscSelector)
RSC = bD.RSCDict[element.text.strip()]
这是通过循环测试字段中的值,然后查找相应的元素来查找我想要的文本。 (两个单独的表格及相应的信息)
什么是扔我,是,前4次迭代,它工作,5及以上它无法得到文本。 (通过')
此外,如果我手动检查chrome中的元素,那么它可以工作......代码没有变化,运行时间相同吗?
完整的代码块:
def accept_order2(order_R, quantity, chrome, chromeHandleID, firefox, fFoxHandleID):
chrome.switch_to.window(chromeHandleID)
chrome.switch_to.frame(chrome.find_element_by_css_selector('#itemDetail'))
RSC = None
for count in range(numberOfRSCs):
qtySelector = '#ctl00_ctl00_contentMainPlaceHolder_MainContent_rptCheckout_ctl00_' \
'datalstContainer_ctl{}_txtOrderQty'.format(str(count).rjust(2, '0')) # pad string/0 indexed
try:
element = chrome.find_element_by_css_selector(str(qtySelector))
except ElementNotVisibleException:
print('Double check at least 1 field has data entered into it.')
break
fieldQuantity = element.get_attribute("value")
if fieldQuantity != '' and fieldQuantity != ' ' and fieldQuantity is not None:
if int(fieldQuantity) == quantity:
rscSelector = '#ctl00_ctl00_contentMainPlaceHolder_MainContent_dlRSCName > tbody > tr > ' \
'td:nth-child({}) > table > tbody > tr:nth-child(1) > td > ' \
'span'.format(str(count+1)) # This element is 1 indexed, why? who knows
element = chrome.find_element_by_css_selector(rscSelector)
RSC = bD.RSCDict[element.text.strip()]
break
else:
raise ValueError('Origiinial Order Quantity and quantity supplied in field does not match')
这似乎是chromedriver中的一个错误,但是,我很清楚我没有足够的专业知识来做出这样的声明。
非常感谢任何帮助!!!
Christopher Lund
P.S。我无法控制我尝试使用的网页。我故意同时使用2个浏览器:firefox和Chrome。 Firefox代码并未显示简洁性,因为那里没有问题。