Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/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
Python 3.x 使用xpath和contains选项单击按钮_Python 3.x_Selenium_Web Scraping - Fatal编程技术网

Python 3.x 使用xpath和contains选项单击按钮

Python 3.x 使用xpath和contains选项单击按钮,python-3.x,selenium,web-scraping,Python 3.x,Selenium,Web Scraping,我有一个页面,我需要单击满足条件的特定按钮,我已经相应地编写了代码,但是当单击按钮事件不满足contains条件时会出现问题,因为我得到了InvaliseSelect或Exception,我相信我在编写xpath时犯了错误 在我正在抓取的页面中,有多行,每行有四列,因此对于每行,我将列中的每个元素分别附加到列表中,并使用enumerate检查按钮文本的条件,以获取列表的索引,其中按钮的文本是具有这些文本我想检查所有的值,比如第一个元素,第二个元素,第三个元素,第四个元素,然后单击所有这些条件都存

我有一个页面,我需要单击满足条件的特定按钮,我已经相应地编写了代码,但是当单击按钮事件不满足contains条件时会出现问题,因为我得到了InvaliseSelect或Exception,我相信我在编写xpath时犯了错误

在我正在抓取的页面中,有多行,每行有四列,因此对于每行,我将列中的每个元素分别附加到列表中,并使用enumerate检查按钮文本的条件,以获取列表的索引,其中按钮的文本是具有这些文本我想检查所有的值,比如第一个元素,第二个元素,第三个元素,第四个元素,然后单击所有这些条件都存在的行的td中的元素

for row in rows:
    try:
        SizeOfContainer = row.find_element_by_xpath('//*[@id="text-size"]/span').text.replace('Double \n Doors', "")
        SizeOfContainer1 = SizeOfContainer.replace('HC', "")
        SizeOfContainer2 = SizeOfContainer1.replace('Double Doors', "")
        SizeOfContainer3 = SizeOfContainer2.replace('\n', "")
        SizeOfContainer4 = SizeOfContainer3.replace('DoubleDoors', "")
        print(SizeOfContainer4)
        SizeOfContainers.append(SizeOfContainer4)
        Ranking = row.find_element_by_xpath('td[2]/b').text
        Ranking1 = Ranking.replace('\n',"")
        print(Ranking1)
        Rankingofcont.append(Ranking1)
        Price = row.find_element_by_xpath('td[3]/h4').text
        pricelist.append(Price)
        print(Price)
        DeliveryAvailable = row.find_element_by_xpath('td[4]').text
        print(DeliveryAvailable)
        deliveryav.append(DeliveryAvailable)
        CityName = DeliveryAvailable.replace("Yes, to","")
        try:
            delsta = row.find_element_by_xpath('td[5]/a/b').text
        except NoSuchElementException:
            delsta = row.find_element_by_xpath('td[5]/form/button/b').text
        print(delsta)
        delstatus.append(delsta)
    except NoSuchElementException:
        pass
    listnumbcond = [i for i, x in enumerate(delstatus) if x == "View Delivery Cost »"]
    print(listnumbcond)
    pricenew=[]
    SizeOfContainersnew = []
    Rankingofcontnew = []
    deliveryavnew = []
    for i in listnumbcond:
        pricenew.append(pricelist[i])
    for i in listnumbcond:
        SizeOfContainersnew.append(SizeOfContainers[i])
    for i in listnumbcond:
        Rankingofcontnew.append(Rankingofcont[i])
    for i in listnumbcond:
        deliveryavnew.append(deliveryav[i])
    print(pricenew)

    for j in pricenew:
        ss = pricenew.index(j)
        print(ss)
        aj = SizeOfContainersnew[ss]
        print(aj)
        ag = Rankingofcontnew[ss]
        print(ag)
        adf = deliveryavnew[ss]
        aj1 = str(aj)
        g = str(j)
        ddjel = "//*[contains(text()," + '"' +aj1 + '"' + ")]"+"//*[contains(text()," + '"' +ag + '"' + ")]"+"//*[contains(text()," + '"' +g + '"'+ ")]"+"'//*[contains(text()," + '"' +adf + '"' + ")]/../[@class="+"'button radius small dropshadowtiny margin4r'"+"]'"
        Delivery_cost = row.find_element_by_xpath(ddjel).click()
        delivery_details()
我希望检查td是否包含第一个文本,然后在下一个td中检查第二个文本的值,然后在第三个td文本中检查第三个td文本,然后在满足所有条件的情况下检查第八个td文本,然后单击第五个td按钮

所有这些要检查的值都是从我存储它的列表中获取的

我已经附加了页面的图像和它的html标签

以下是html代码:

<tr>
<td class="text-center">
    <div class="inline min-120">                                            
        <div id="container-size">
            <a href="/includes/size-guide.php" data-reveal-id="ModalSize" data-reveal-ajax="true">
            <img alt="20 container" id="image-size" src="/img/sizes/20-left.png" class="dropshadowtiny">
            <p id="text-size">&nbsp;<span class="black-text">20'</span>
                                                            </p>
        </a></div><a href="/includes/size-guide.php" data-reveal-id="ModalSize" data-reveal-ajax="true">

        </a>
    </div>


</td>
<td class="text-center">
            <b>WWT (Wind &amp; Water Tight)</b><br>

            <sub><a href="/includes/ratings-guide.php" data-reveal-id="ModalRatings" data-reveal-ajax="true">What's this?</a></sub>
                                                                                            </td>
<td class="text-center">
    <h4><a id="1" data-icon-name="" class="myModalIconJS left"></a>$2,049                                       </h4>
                                        </td>
<td class="text-center">                                        <i class="fi-check style28 size-32"></i><small>Yes, to </small>Abanda                                   </td>
<td class="text-center" nowrap="">
    <form method="post" action="/cart.php" class="no-margin-bottom">                
        <label>&nbsp;</label>
        <button class="button radius small dropshadowtiny margin4r"><i class="fi-star style20"></i> <b>View Delivery Cost »</b></button>

        <input type="hidden" name="buyer-city_nameid" value="4829438">
        <input type="hidden" name="buyer-state_admincode" value="US.AL">        
        <input type="hidden" name="buyer-country" value="USA">

        <input type="hidden" name="buyer-depot_city" value="Atlanta">
        <input type="hidden" name="buyer-depot_state" value="GA">
        <input type="hidden" name="buyer-depot_country" value="USA">                        

        <input type="hidden" name="items-product_id" value="1-wwt-20-Atlanta">
        <input type="hidden" name="items-quantity" value="1">
        <input type="hidden" name="items-size" value="20">
        <input type="hidden" name="items-rating" value="wwt">
        <input type="hidden" name="items-price" value="2049">           

        <input type="hidden" name="add_scfs_to_cart" value="yes">                                                                       
    </form>
</td>

WWT(风密和水密)
$2,049 是的,去阿班达 查看交付成本»
。请读一读为什么会这样。考虑使用格式化的基于文本的HTML、代码测试和错误堆栈跟踪更新问题。请读一读为什么会这样。考虑使用格式化的基于文本的HTML、代码测试和错误堆栈跟踪更新问题。