我在Python3中使用硒,我正在努力填寫調查問卷。在本調查問卷中,我將遍歷所有問題並回答問題。我的問題是弄清楚我正在處理的是什麼類型的問題,無論問題是多選還是文本問題。我想這樣做的是類似以下內容:有沒有辦法比較XPath來確定正在查看的元素類型?
while questionsLeft:
if currentQuestion == textQuestion:
answerAsTextQuestion()
elif currentQuestion == multChoice:
answerAsMultChoice()
但我在實施這一點,因爲我不知道如何驗證,如果我看的元素是文本框或麻煩多選題。以下是分別用於文本問題和多選題的HTML。
我到目前爲止是以下內容,都沒有條件通過,所以它每次都會直接進入下一部分。
self.set_filter("unanswered")
all_sections = AssessmentSection(self.driver).get_all_section_names()
print(all_sections)
i = 1
self.driver.implicitly_wait(3)
for element in self.driver.find_elements_by_xpath('(//div[@bo-if])'):
self.driver.implicitly_wait(3)
print("in for loop at " + all_sections[j])
if element.get_attribute("bo.if") == "questionResponse.question.type === 'TextQuestion'":
print("found text question")
self.driver.find_element_by_xpath('.//pre[@class="textareaClone"]//div').send_keys(XpathData.test_string)
self.driver.find_element_by_xpath('.//pre[@class="textareaClone"]//div').send_keys(Keys.TAB)
i += 1
elif element.get_attribute(
"bo.if") == "questionResponse.question.type === 'SingleSelectQuestion' || questionResponse.question.type === 'PolarQuestion'":
print("found choice question")
self.driver.find_element_by_xpath(
'.//*[@id="ng-app"]/body/div[1]/div[3]/div/div/div[2]/div[3]/div[' + str(
i) + ']/div/div/div/div[2]/div[1]/label').click()
i += 1
Wait(self.driver, Wait.timeout).until(EC.visibility_of_element_located((By.XPATH, '//div[contains(text(), \'' + all_sections[j] + '\')]')))
self.driver.find_element_by_xpath('//div[contains(text(), \'' + all_sections[j] + '\')]').click()
j += 1
print(j)
你能分享兩個元素的HTML樣本嗎?還分享'questionsLeftInQuestionnaire()'的代碼' – Andersson
爲元素添加了HTML。截至目前questionsLeftInQuestionnaire()有一個遍歷所有問題的循環,當迭代器沒有任何剩餘的問題可供引用時拋出異常。 – TheOneTrueSign