0

I am trying to select for a particular information using xpath or css selector. But I keep on getting error messages. Can someone help with seeing what's wrong here?

html

This is part of my code

output = driver.find_element_by_xpath("//td[@class_= 'sku']")
print(output)

Using the modifications give below, I am obtaining this error message:

Traceback (most recent call last):
  File "sa.py", line 25, in <module>
    output = driver.find_element_by_xpath("//td[@cl
  File "C:\Python27\lib\site-packages\selenium\webd
   return self.find_element(by=By.XPATH, value=xpa
  File "C:\Python27\lib\site-packages\selenium\webd
    {'using': by, 'value': value})['value']
  File "C:\Python27\lib\site-packages\selenium\webd
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webd
    raise exception_class(message, screen, stacktra
selenium.common.exceptions.NoSuchElementException:
td[@class=\'sku\']/p"}' ; Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_
[email protected]/components/driver_component.js:9
    at FirefoxDriver.prototype.findElement (file://
ecode.com/components/driver_component.js:9479)
    at DelayedCommand.prototype.executeInternal_/h
[email protected]/components/command_processor.js:1
    at DelayedCommand.prototype.executeInternal_ (f
@googlecode.com/components/command_processor.js:114
    at DelayedCommand.prototype.execute/< (file:///
code.com/components/command_processor.js:11402)

This is the code that I have written:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = "http://www.sigmaaldrich.com/united-states.html"
#cas = "1300746-79-5"
cas = "100-44-7"

driver = webdriver.Firefox()
driver.get(url)

inputElement = driver.find_element_by_name("Query")
inputElement.send_keys(cas)
inputElement.submit()

pricing_link = driver.find_element_by_css_selector("li.priceValue a")
pricing_link.click()

output = driver.find_element_by_xpath("//td[@class='sku']/p") 
print(output)

driver.quit()

1 Answer 1

3

After the discussion with OP and alecxe, this is a timing issue, where you need to use WebDriverWait to wait for table loading.

# XPath to select <p> inside <td> with class name 'sku'
outputs_by_xpath = WebDriverWait(driver, 10).until(
    lambda driver : driver.find_elements_by_xpath(".//td[@class='sku']/p")
)

# or CSS selector
outputs_by_css = WebDriverWait(driver, 10).until(
    lambda driver : driver.find_elements_by_css_selector("td.sku > p")
)

for output in outputs_by_xpath:
    print(output.text)

print("\n")

for output in outputs_by_css:
    print(output.text)

Output:

185558-50G
185558-250G
185558-1KG
185558-2KG

185558-50G
185558-250G
185558-1KG
185558-2KG
Sign up to request clarification or add additional context in comments.

1 Comment

Hi. For the xpath method, I am getting an error message. Please see my response to the above post. Thank you

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.