1

I am trying to over ride some function of a prime react button component but i am getting this error while extending prime react button component class. Here is my code:

import { Button } from "primereact/button";
class BtnBox extends Button {
  constructor(props) {
    super(props);
    this.renderLabel = this.renderLabel.bind(this);
  }

  renderLabel() {
      return <span>icon</span>;
  }
}
class IconButton extends React.Component {
  render() {
    return (
      <div className="icon-button">
        <BtnBox {...this.props} />
      </div>
    );
  }
}

export default IconButton;

I'd suggest using webdriver waits but your main issue was if sunglasses.text == 'Sunglasses':.

# Select Product
# products = driver.find_elements_by_xpath('//*[@class="woocommerce-loop-product__title"]')
products = driver.find_elements_by_css_selector('[class*="status-publish"]')
for product in products:
    sunglasses = product.find_element_by_css_selector('a h2')
    if sunglasses.text == 'Sunglasses':
        sunglasses.click()
        break

Below is just suggested edits for future stability.

wait = WebDriverWait(driver, 3)
driver.get('https://www.khepa.xyz/')
 
# Shop Page
wait.until(EC.element_to_be_clickable((By.LINK_TEXT,"SHOP"))).click()
 
# Next Page
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"[class*='next']"))).click()

Now a simpler xpath would be

//a[./h2[.='Sunglasses']]

Which would be used simply as

try:
    driver.find_element_by_xpath("//a[./h2[.='Sunglasses']]").click()
except:
    print('No item')

Imports

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

1 回答 1

1

你可以试试这个表格吗?

import { Button } from "primereact/button";
     class BtnBox extends Button {
         constructor(props) {
             super(props);
          }
            
         render = () => <span>{this.props.name}</span>;
      }
    
   class IconButton extends React.Component {
      render() {
        return (
          <div className="icon-button">
            <BtnBox name='add item' />
          </div>
        );
      }
    }
    
 export default IconButton;

如果不适合你,你能分享更多细节吗?

于 2021-02-27T08:37:54.003 回答