我在下面的代码中做错了什么?我正在使用selenium用于Python,出于某种原因,我得到以下错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在下面的代码中做错了什么?我正在使用selenium用于Python,出于某种原因,我得到以下错误相关的知识,希望对你有一定的参考价值。

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select

browser = webdriver.Safari()
browser.get('https://www.supremenewyork.com/shop/jackets/h90p8mrfk')
sleep(2)
addToCart = browser.find_element_by_name('commit')
addToCart.click()
sleep(2)
browser.find_element_by_xpath('//a[@class="button checkout"]').click()
sleep(2)
browser.find_element_by_id('order_billing_name').send_keys('Name')
browser.find_element_by_id('order_email').send_keys('email')
browser.find_element_by_id('order_tel').send_keys('phone number')
browser.find_element_by_id('bo').send_keys('address')
browser.find_element_by_id('order_billing_zip').send_keys('zip')
Select(browser.find_element_by_id('state_label')).select_by_visible_text('state')

此代码中的所有内容似乎都可以正常工作,直到填写发货/结算信息为止。我得到了这个奇怪的错误,我无法在互联网上找到任何答案:

selenium.common.exceptions.WebDriverException:消息:发生未知错误:发生JavaScript异常:Window.getComputedStyle的参数1('element')必须是Element的实例

我想要完成的自动化流程的步骤是:

1)转到实际网页(检查)

2)将产品添加到购物车(检查)

3)点击结账按钮(检查)

4)输入账单/运费信息

答案

使用WebDriverWait()比使用sleep()更好。由ID选择不工作使用XPATH

# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys

browser = webdriver.Chrome()

browser.get('https://www.supremenewyork.com/shop/jackets/qfc4mhl9g')

addToCart = browser.find_element_by_name('commit')
addToCart.click()

# wait max 10 second
checkOut = WebDriverWait(browser, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//a[@class="button checkout"]' ))
)

checkOut.click()

WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.ID, 'order_billing_name'))
)

browser.find_element_by_xpath('//input[@id="order_billing_name"]').send_keys('Name')
browser.find_element_by_xpath('//input[@id="order_email"]').send_keys('email')
browser.find_element_by_xpath('//input[@id="order_tel"]').send_keys('phone number')
browser.find_element_by_xpath('//input[@id="order_billing_zip"]').send_keys('zip')
browser.find_element_by_xpath('//input[@id="order_billing_address"]').send_keys('address')

state = Select(browser.find_element_by_xpath('//*[@id="order_billing_state"]'))
state.select_by_visible_text('茨城県')

以上是关于我在下面的代码中做错了什么?我正在使用selenium用于Python,出于某种原因,我得到以下错误的主要内容,如果未能解决你的问题,请参考以下文章

[python win32使用Windows Installer API失败,但perl正常-我在python中做错了什么?

我在 Swinject 中做错了啥?

我在我的 Angular HTML 模板中做错了啥? [复制]

VBA 中的 SQL 语句

我在 Laravel 8 Cors 中做错了啥配置?

我在proguard规则中做错了啥?