【发布时间】:2017-10-17 11:26:08
【问题描述】:
我正在尝试使用 Python 中的 Selenium 在https://www.mastercard.us/en-us/consumers/get-support/convert-currency.html 中自动运行货币转换器。这是我到目前为止得到的:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
link1 = 'https://www.mastercard.us/en-us/consumers/get-support/convert-currency.html'
driver1 = webdriver.PhantomJS()
driver1.get(link1)
script = """ var select = arguments[0];
for(var i = 0; i < select.options.length; i++) {
if(select.options[i].value == arguments[1]) {
select.options[i].selected = true;
}
}
"""
driver1.find_element_by_id('getDate').send_keys('05-Sep-2017')
select = driver1.find_element_by_id('firstID')
driver1.execute_script(script, select, 'USD');
driver1.find_element_by_name('txtTAmt').send_keys('1.00')
driver1.find_element_by_name('txtBankFee').send_keys('0.00')
select = driver1.find_element_by_id('newID')
driver1.execute_script(script, select, 'EUR');
driver1.find_element_by_id('btnSubmit').click()
wait = WebDriverWait(driver1, 100)
element = wait.until(EC.presence_of_element_located((By.XPATH,
'//*[@name="txtCardAmt" and text() != ""]')))
print(element.text)
问题是“txtCardAmt”字段永远不会被填充,并且我遇到了超时异常。我的问题是,我怎样才能等待服务器完成计算?
PS:我知道使用 Select 类可以更轻松地选择选项,但是在这个网站上它们由于某种原因不起作用。
【问题讨论】:
-
你需要使用'wait.until_not' EC for text_to_be_present_in_element wait.until_not(ExpectedConditions.text_to_be_present_in_element((By.Name,"txtCardAmt"),'existing text'))... 这应该等到现有文本消失。下拉列表是使用 span、ul 和 li 的组合创建的。您将需要手动单击并选择选项
标签: python-3.x selenium phantomjs