Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Selenium Python Beautifulsoup在网页上单击按钮_Python_Selenium_Selenium Webdriver_Beautifulsoup - Fatal编程技术网

使用Selenium Python Beautifulsoup在网页上单击按钮

使用Selenium Python Beautifulsoup在网页上单击按钮,python,selenium,selenium-webdriver,beautifulsoup,Python,Selenium,Selenium Webdriver,Beautifulsoup,我正在尝试创建一个“机器人”来购买图形卡。我已经下载了一个预先制作好的脚本,我正在努力适应我的需要 脚本将我带到Firefox中的站点,使用以下代码查找我试图查找的按钮: findAllCards=soup.find('button',{'class':'button_uustyledbutton-iESSlv dJJJCD button dtUzzq kHUYTy')) 这很有效。但是,当我尝试单击按钮时,我无法执行此操作,因为我不知道我将在此处找到什么: driverWait(驱动程序,'c

我正在尝试创建一个“机器人”来购买图形卡。我已经下载了一个预先制作好的脚本,我正在努力适应我的需要

脚本将我带到Firefox中的站点,使用以下代码查找我试图查找的按钮:

findAllCards=soup.find('button',{'class':'button_uustyledbutton-iESSlv dJJJCD button dtUzzq kHUYTy'))

这很有效。但是,当我尝试单击按钮时,我无法执行此操作,因为我不知道我将在此处找到什么:
driverWait(驱动程序,'css','space-b center')

我用来测试的网页是:

完整代码如下:

driver.get(url)
    while True:
        html = driver.page_source
        soup = bs4.BeautifulSoup(html, 'html.parser')
        wait = WebDriverWait(driver, 15)
        wait2 = WebDriverWait(driver, 2)
        try:
            findAllCards = soup.find('button', {'class': 'Button__StyledButton-iESSlv dJJJCD Button-dtUzzq kHUYTy'})
            if findAllCards:
                print(f'Button Found!: {findAllCards.get_text()}')

                # Clicking Add to Cart.
                time.sleep(.3)
                print('Click')
                driverWait(driver, 'css', '.space-b center')
                print('Click1')
                time.sleep(2)

谢谢:)

您上面的
findAllCards
返回3个web元素,而不是1个。假设您正试图单击“添加到篮子”按钮:

findAllCards = driver.find_element_by_xpath("//div[@id='product-actions']//div[@data-component='add-to-basket-button-wrapper']//button")

findAllCards.click()

元素的一些奇怪的东西是可交互的

wait = WebDriverWait(driver, 10)
driver.get(url)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button#onetrust-accept-btn-handler"))).click()
try:
    elem=wait.until(EC.presence_of_element_located((By.XPATH,"//button[contains(.,'Add to basket')]")))
    driver.execute_script("arguments[0].click();", elem)
except Exception as e:
    print(str(e))
进口

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

谢谢你的快速回复。我试过上述方法,但似乎不起作用。呜呜,我错了。ID不正确。如果findAllCards:print(f'button Found!:{findAllCards.get_text()}),请再次尝试:findAllCards=soup.find('button',{'class':'button_ustyledbutton-iESSlv djjcd button dtUzzq kHUYTy'})。time.sleep(.3)print('Click')findAllCards=driver.find_element_by_xpath(“//div[@id='product-main']//div[@data component='add-to-basket-button-wrapper']//button”)findAllCards.Click()print('Click1')time.sleep(2)把汤扔掉,找一块和剩下的全部。在您到达该URL后,请尝试使用我上面提供的代码。看看它是否有效谢谢,我明天会试试,然后再报告